我正在尝试上传多个分组到服务器的视频。
我从相机胶卷获取AVAssets,获取其URL,将它们放入队列并打开包含第一个文件的URL的输入流。我完成上一个文件后才会打开下一个文件。
当我上传一个视频时,一切都很顺利但是当我选择多个视频时,我收到了一个错误。我正在使用流轮询,这是输入流读取代码:
int size = 1024;
uint8_t readBuffer[size];
NSMutableData *collectorBuffer = [NSMutableData data];
NSInteger length = 0;
NSInteger totalReadBytes = 0;
while (totalReadBytes < kChunkSize) {
length = [self.inputStream read:readBuffer maxLength:size];
if (length) {
[collectorBuffer appendBytes:(const void *)readBuffer length:length];
totalReadBytes += length;
} else {
break;
}
}
我得到的错误是长度为-1,streamError为:
错误域= NSPOSIXErrorDomain代码= 1“不允许操作”UserInfo = {_ kCFStreamErrorDomainKey = 1,_kCFStreamErrorCodeKey = 1}
我知道我可以将视频复制到沙盒中然后上传它们,但重点是不要分配太多内存。 我检查的每个应用一次只能上传1个视频。甚至可以在iOS上进行这样的上传吗?
答案 0 :(得分:0)
在您的问题中,您说您首先获得所有网址,然后开始阅读它们。只需一次获取一个URL 即可解决此问题。
我不知道为什么会发生这种情况,但我的假设是(因为您正在使用相机胶卷,而不是您的应用程序的沙盒),您将被授予访问权限的权限。您从资产中获取的最后一个URL。
在您的情况下,您获取所有URL,并尝试从第一个读取。但是,您很可能只有权读取最后一个URL:
- 获取第一个网址(拥有第一个网址的权限)
- 获取第二个网址(拥有第二个网址的权限,失去第一个网址的权限)
- ...
醇>