【问题标题】:Add content disposition param for uploadTask using URLSession and URLRequest使用 URLSession 和 URLRequest 为 uploadTask 添加内容配置参数
【发布时间】:2019-06-30 03:16:49
【问题描述】:

我正在使用 URLSession 'uploadTask from file'

func uploadTask(with request: URLRequest, fromFile fileURL: URL) -> URLSessionUploadTask

几乎一切正常,但现在我们的服务器需要一个额外的参数作为“uploadKey”,作为内容处置与文件名一起传递。

这可以通过生成多部分请求并像我们通常所做的那样添加内容处置来完成。

我想在使用“从文件上传任务”时添加它以避免内存压力。请建议如何做。

【问题讨论】:

    标签: nsurlsession nsurlrequest content-disposition urlsession urlrequest


    【解决方案1】:

    通过阅读这个问题,我怀疑您对上传任务的作用有微妙的误解(不幸的是,Apple 的文档需要在这方面进行一些认真的改进,这无济于事)。如果您在上传表单中选择文件,这些任务不会像 Web 浏览器那样上传文件。相反,他们将文件用作上传请求的正文。我认为他们默认提供基于文件名的合理内容类型,虽然我不确定,但他们确实以表单编码发送数据。

    所以假设我完全理解这个问题,你的选择是:

    1. 继续使用多部分编码。可选择将多部分正文写入文件而不是将其保存在内存中,并使用上传任务从该文件而不是 NSData 对象提供正文。
    2. 将您尝试发送的未编码文件作为整个上传正文上传,并在 URL 本身中以 GET 参数的形式提供您需要提供的任何其他参数。
    3. 使用其他一些编码,例如 JSON 或协议缓冲区。

    无论哪种方式,服务器代码都会确定支持这些方法中的哪一种。如果您可以修改服务器代码,那么我会推荐第二种方法。它比第一种方法效率稍高,比 JSON 效率高得多,并且比任何其他方法都更容易实现。

    【讨论】:

      猜你喜欢
      • 2017-09-06
      • 1970-01-01
      • 1970-01-01
      • 2020-01-18
      • 2020-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多