无法在 SwiftUI 中使用多部分形式上传文件

Cant upload file with multipartform in SwiftUI

我正在尝试使用多部分表单数据在 swiftUI 中上传文件 代码是这样的:

do {
                let data = try Data(contentsOf: url)
                    AF.upload(
                        multipartFormData: { multipartFormData in
                        multipartFormData.append(data, withName: "uploadedFile",fileName: "uploadedFile",mimeType: "text/plain")
                        }, to: "https://server.com/upload",headers: ["Authorization" : "Bearer \(API.shared.accessToken!)",
                                                                                                             "Content-Type": "multipart/form-data"])
                    .responseDecodable(of: String.self ) { response in
                            debugPrint(response)
                        }
                }
                catch {
                    print("Error \(error)")
                }

其中url是本地的URL,DocumentPickerViewController已经提供了。

由于某种原因,服务器报错说出了点问题。 这是我在 Charles 中收到的回复:

这是我在 Postman 中收到的回复(有效):

我注意到postman在formdata中自动生成了Content type参数(本次测试是一张图片,但可以是任何文件类型)。默认情况下,Alamofire 没有这样做,所以我在请求中添加了文件名和 mimetype (text/plain),但这没有用。

有什么想法吗?它适用于邮递员。这是服务器问题还是前端问题?

这段代码对我有用,用于上传图像文件

我用了 "application/x-www-form-urlencoded" 而不是 "Content-Type": "multipart/form-data"

let url = "url here"
let headers: HTTPHeaders = [
        "Authorization": "Bearer Token Here",
        "Accept": "application/x-www-form-urlencoded"
    ]
AF.upload(multipartFormData: { (multipartFormData) in
            multipartFormData.append(imageData, withName: "image" ,fileName: "image.png" , mimeType: "image/png")
        }, to: url, method: .post ,headers: headers).validate(statusCode: 200..<300).response { }