【问题标题】:Alamofire multipartFormData upload doesn't send dataAlamofire multipartFormData 上传不发送数据
【发布时间】:2015-10-16 17:30:20
【问题描述】:

我正在尝试使用 Alamofire 上传图像,但服务器未获取图像。 这是我上传的代码:

Alamofire.upload(Router.UpdateUserAvatar,
        multipartFormData: { (multipartFormData) -> Void in
            let compressionQuality: CGFloat = 0.8
            guard let imageData = UIImageJPEGRepresentation(image, compressionQuality) else {
                print("Unable to get JPEG representation for image \(image)")
                callCompletion()
                return
            }
            multipartFormData.appendBodyPart(data: imageData, name: ParameterKey.Avatar, mimeType: "image/jpeg")

        }, encodingCompletion: { (encodingResult) -> Void in
            switch encodingResult {
            case .Success(request: _, streamingFromDisk: _, streamFileURL: _):
                finalResult = Result.Success(self)
                callCompletion()
            case .Failure(let errorType):
                let error = errorType as NSError
                finalResult = Result.failureForError(error, data: nil)
                callCompletion()
            }
        }
    )

【问题讨论】:

    标签: ios swift alamofire


    【解决方案1】:

    经过将近 4 个小时的研究,我发现 API 也需要文件名,这是我更改的行,一切正常。

    multipartFormData.appendBodyPart(data: imageData, name: ParameterKey.Avatar, fileName: "avatar.jpg", mimeType: "image/jpeg")
    

    【讨论】:

    • 非常感谢您分享这个!它也适用于我。但是现在我有点困惑,为什么我需要给这个文件一个名字,因为我永远不会在服务器端使用它。可能一些服务器调整有助于appendBodyPart 在没有多余的fileName 参数的情况下工作?..
    • 在我的情况下,这是因为我们在服务器端使用的库需要名称,即使我们不使用它。
    • Alamofire 4 中的音频文件怎么样? - 我尝试以这种形式发送音频文件:multipartFormData.append(audioLocalPath, withName: "file", fileName: "file", mimeType: "application/octet-stream") 但出现此错误:multipartEncodingFailed(Alamofire.AFError .MultipartEncodingFailureReason.bodyPartFileNotReachableWithError(file:///var/mobile/Containers/......./Documents/item.mp3, NSUnderlyingError=0x16049100 {Error Domain=NSPOSIXErrorDomain Code=2 "No such file or directory"}} )) - 问题出在哪里? - 错误的请求或错误的音频路径?
    • @Saeid 对于您发布的错误{Error Domain=NSPOSIXErrorDomain Code=2 "No such file or directory"},看起来问题出在音频路径
    猜你喜欢
    • 2017-11-23
    • 1970-01-01
    • 2019-07-15
    • 2017-01-30
    • 1970-01-01
    • 1970-01-01
    • 2017-10-21
    • 2016-04-11
    • 2019-03-04
    相关资源
    最近更新 更多