首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSURLSessionUploadTask -指定内容范围

NSURLSessionUploadTask -指定内容范围
EN

Stack Overflow用户
提问于 2017-11-18 00:05:33
回答 1查看 256关注 0票数 0

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

我尝试过设置Content-Range和Range标头,例如:

代码语言:javascript
复制
[request addValue:@"bytes 2367488-7056719/7056719" forHTTPHeaderField:@"Content-Range"];
[request addValue:@"4689232" forHTTPHeaderField:@"Content-Length"];

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

有谁知道这是不是可以做到的?

我已经看到了后台上传任务不可能上传简历的引用,这本质上是相同的事情(例如this问题)。但没有直接提到发送某个范围。

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

EN

回答 1

Stack Overflow用户

发布于 2017-11-18 23:54:49

在决定发送什么内容时,NSURLSession并不关心报头。它会发送您提供的blob,如果是文件,还会将Content-Length设置为文件的大小(如果适用,则为编码/压缩)。

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47354748

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档