NSURLSessionUploadTask - 指定内容范围



我正在使用NSURLSession的uploadTaskWithRequest:FromFile:在后台上传文件。这有效,但是我只想上传文件的某些部分。所以我试图让上传任务只上传一定范围的文件。

我尝试设置内容范围和范围标题,例如:

[request addValue:@"bytes 2367488-7056719/7056719" forHTTPHeaderField:@"Content-Range"];
[request addValue:@"4689232" forHTTPHeaderField:@"Content-Length"];

但是这不起作用 - 上传会话无论如何都会发送整个文件。它保留 Range 标头,并用整个文件大小覆盖 Content-Length 标头。

有谁知道这是否可以做到?

我已经看到后台上传任务无法上传简历的参考资料,这本质上是一回事(例如这个问题(。但没有直接提及发送某个范围。

到目前为止,我唯一的解决方案是将文件的切碎版本写入磁盘。我想避免这种情况。

NSURLSession 在决定发送什么时不关心标头。 它会发送你提供给它的 blob,如果是文件,还会将"内容长度"设置为文件的大小(如编码/压缩,如果适用(。

如果您希望它从文件中间发送 n 个字节,则需要将这些字节写入它们自己的文件,或者使用流式处理请求让您仅提供这些字节。

要执行后一种方法,请创建带有文件流的上载请求,并使用强制转换为 NSStream 对象的绑定对 CFStream 对象。 然后,打开流,当要求流委托提供更多字节时,请提供这些字节,并检查写入调用的返回值,以确定下次请求字节时要跳过多少字节。

相关内容

  • 没有找到相关文章

最新更新