空请求正文 alamofire multipart

时间:2021-01-25 06:44:39

标签: swift alamofire multipartform-data

我想通过 alamofire 提出这样的请求,并附上选定的文件:

enter image description here

我还必须向请求添加拦截器。因此,我将以下代码添加到我的图像选择器方法中:

let manager =  Session(configuration: URLSessionConfiguration.default, interceptor: CallInterceptor.init(method:HTTPMethod.post))
manager.upload(multipartFormData: { multipartFormData in
     multipartFormData.append( fileUrl, withName: "upload_doc\"; filename= \"\(fileName)\"")
},
to:Pathes.init(endpoint: "user/photo").resourseUrl.absoluteString).responseJSON(completionHandler: { (completion) in
   print(completion.debugDescription)
})

哪里:

let fileName = fileUrl.lastPathComponent

在日志中我看到了这样的输出:

[Request]: POST url
    [Headers]:
        Authorization: Bearer token
        Content-Type: multipart/form-data; boundary=alamofire.boundary.c5da18c6b053a9d7
    [Body]: None
[Response]: None
[Network Duration]: None
[Serialization Duration]: 3.253298928029835e-05s
[Result]: failure(Alamofire.AFError.sessionDeinitialized)

如我所见,我没有附加请求正文是什么导致此类请求取消。如何将正文添加到请求中?我认为这一行:

multipartFormData.append( fileUrl, withName: "upload_doc\"; filename= \"\(fileName)\"")

但它不会向请求添加正文。我也试过直接添加文件:

 multipartFormData.append(imgData, withName: "upload_doc\"; filename= \"\(fileName)\"",fileName: fileName, mimeType: "image/jpg")

但这种方式也发送:

[Body]: None

所以问题是如何向多部分请求添加一些正文,或者我必须以另一种方式发送文件?

1 个答案:

答案 0 :(得分:2)

错误 .sessionDeinitialized 表示您的 Session 实例在请求完成之前被deinit处理。您需要让它保持活动状态,无论是作为其他东西的实例值,还是作为单例。