无法在 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 { }
我正在尝试使用多部分表单数据在 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 { }