我正在尝试使用web服务将大文件从我的应用程序上传到web服务器。
我正在将视频读取到NSData实例中,并将其转换为base64编码的字符串。然后,我将字符串传递给webservice。我甚至尝试将视频质量降低到低,而上传仍然无法在服务器上上传超过5分钟的视频,服务器只是停止响应。
当我检查来自服务器的编码数据时,它没有完全接收到它。我认为文件太大了,无法正常发送。下面是我的一些代码。我尝试了许多帖子中提到的许多选项,但仍然无法按照客户的要求正确上传视频。我已经成功上传了4到5分钟的视频,但质量不高,但无法上传大视频。请帮帮我。
NSData *videoData = [NSData dataWithContentsOfURL:urlVideo];
pictureDataString = [videoData base64Encoding];
----other code
xml = [xml stringByAppendingString:[NSString stringWithFormat:@"<BinaryData>%@</BinaryData>",pictureDataString]];
...other code 在生成整个xml之后,我将使用以下代码:
url = [NSURL URLWithString:@UploadMemory];
serviceRequest = [ASIHTTPRequest requestWithURL:url];
[serviceRequest setShouldStreamPostDataFromDisk:YES];
[serviceRequest addRequestHeader:@"Content-Type" value:@"text/xml"];
[serviceRequest appendPostData:[xml dataUsingEncoding:NSUTF8StringEncoding]];
[serviceRequest setTimeOutSeconds:86400];
[serviceRequest setDelegate:self];
[serviceRequest startAsynchronous];我甚至尝试将NSData实例拆分为多个部分,并将单独的XML文件发送到服务器,这样我就可以节省时间并能够将大型视频文件上传到服务器,但我仍然不能成功做到这一点。
将数据编码到base64需要很长时间,因此我无法拆分编码后的字符串以将多个xml发送到服务器。请建议一种更好的方法来做这件事。
我还有另外一个选择,如果有人能告诉我如何在iOS中读取二进制格式的数据文件,这样我就可以读取二进制分割的视频文件,使NSData,然后将其转换为base64encoding,这样就可以工作了。
非常感谢....
发布于 2016-01-14 00:17:09
你有可能在主线程上进行编码吗?如果是这样,iOS上的看门狗计时器在给定的时间后可能会判断出你的应用程序已经崩溃,并启动了你的进程。如果是这样的话,你需要在后台进程上进行编码。
https://stackoverflow.com/questions/12382697
复制相似问题