我目前需要将大文件从 iDevice 上传到服务器 API。为此,我尝试使用 ASIHTTPRequest 库,因为它自动支持在排队的块中上传大文件(在此之前,我只是一次创建了一个包含整个文件字节的 NSData 实例并将其附加到 POST 消息中,但这会导致由于 RAM 使用量过多,应用程序在较大的文件上崩溃)。
问题是当您需要上传文件并将文件添加到 HTTP Post 消息时,这是您需要使用的语法:
[theUploadRequest setFile:@"" forKey:@"videoupload"];
setFile 需要字符串格式的文件路径。我目前遇到的问题是,您似乎不允许简单地从不在您的应用程序沙箱中的文件中获取文件路径?因为我需要上传一个不在我的应用程序中但在标准相机胶卷之外的文件。
我试图进行这个快速测试,看看我是否可以创建一个 NSData 对象并用相机胶卷中的文件中的数据填充它,并提供这样的路径:
NSData *testData = [NSData dataWithContentsOfURL:theContent.defaultRepresentation.url];
NSLog(@"THE SIZE OF THE TEST DATA: %i", testData.length);
请注意,“theContent”是 ALAsset 的一个实例,并且是从相机胶卷中检索到的文件。结果只是长度为0,我想这意味着你不能简单地这样做。
有没有办法解决?还是我必须以某种方式将视频文件导入应用程序的沙箱?