【问题标题】:Multipart form-data file uploading using Alamofire使用 Alamofire 上传多部分表单数据文件
【发布时间】:2015-07-31 16:40:16
【问题描述】:

我看过thisthat 之类的问题之一,但它仍然无法正常工作。

我还有一个问题,我应该从函数multipartFormData.appendBodyPart 中输入什么fileURL 参数?

应该是从 PC 上获取图像的一种方式,还是必须将图像添加到 Images.xcassets 中?我应该在这里发送什么?

【问题讨论】:

  • 请更清楚您的问题是什么。
  • 你没看到图片有错误吗?
  • 是的,但将您的问题包含在标题或正文中会有所帮助,而不是指望人们从图像中推断出来。

标签: swift multipart alamofire


【解决方案1】:

您似乎需要解决三个问题。

  1. 使用.POST 而不是POST
  2. fileURL 必须是指向文件系统上文件的有效NSURL。您不能只使用文件名。
  3. 您正在使用responseString 序列化程序,但将闭包中的第三个参数命名为JSON。然后你让result 进入s 并尝试打印出来。 result 参数甚至在任何地方都不存在。相反,您应该print(JSON)

希望这有助于澄清一些事情。

【讨论】:

    【解决方案2】:

    尝试使用.POST 而不是POST


    作为替代解决方案,上传编码文件并将其作为 POST 的参数发送。

    // `data` is NSData
    let base64String = data!.base64EncodedStringWithOptions(NSDataBase64EncodingOptions.allZeros)
    
    let parameters = ["image_data": base64String] as [String: AnyObject]
    Alamofire.request(.POST, "http://your-url.com", parameters: parameters)
    

    这种方法的缺点是由于编码,数据会变大 %33。如果您有带宽问题,这可能不是一个好的解决方案。

    【讨论】:

    • 如何上传base64字符串数组?
    • 有趣。如果数组长度不变,只需对多个参数执行相同操作即可。
    • 你能检查一下我的这个问题吗?
    • @G.Abhisek 我同意这些解决方案。使用 MultipartPostRequest 或者您可以在完成后将图像上传到 AWS S3 之类的东西,向服务器发送请求以检查来自 AWS S3 的 x、y、z id。但 MultipartPostRequest 仍然是最好的解决方案。
    猜你喜欢
    • 2019-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 2015-10-05
    • 2016-02-17
    相关资源
    最近更新 更多