Ios 无法使用Alamofire从阵列上载多个文件
我正在尝试将多个图像和视频从库上传到url。Evertiing工作正常,只是响应只转换一个文件。我选择了两个不同的图像进行实验,但响应只针对阵列中的最后一个图像。这是我的上传功能Ios 无法使用Alamofire从阵列上载多个文件,ios,swift,xcode,alamofire,multipart,Ios,Swift,Xcode,Alamofire,Multipart,我正在尝试将多个图像和视频从库上传到url。Evertiing工作正常,只是响应只转换一个文件。我选择了两个不同的图像进行实验,但响应只针对阵列中的最后一个图像。这是我的上传功能 func upload() { var mediaData = Data() var fname = "" var mimetype = "" let url = URL(string: "https://myurl.com/api/attachment/upload")
func upload() {
var mediaData = Data()
var fname = ""
var mimetype = ""
let url = URL(string: "https://myurl.com/api/attachment/upload")
let headers: HTTPHeaders = [
"Authorization": "my Authorization Token",
"Content-type": "multipart/form-data"
]
Alamofire.upload(multipartFormData: { multipartFormData in
for n in 0..<self.array.count{
mediaData = self.array[n].data
if self.array[n].type == "image"{
fname = "resim\(n).jpeg"
mimetype = "image/jpeg"
}else{
fname = "video\(n).mp4"
mimetype = "video/mp4"
}
multipartFormData.append(mediaData, withName: "files", fileName: fname, mimeType:mimetype)
}
},
to: url!, method: .post, headers: headers) { (result) in
switch result{
case .success(let upload, _, _):
upload.uploadProgress(closure: { (progress) in
print("uploding: \(progress.fractionCompleted)")
})
upload.responseJSON{ response in
print(response)
self.hud.dismiss()
if let err = response.error{
print(err)
return
}
}
case .failure(let error):
print("Error in upload: \(error.localizedDescription)")
}
}
}
知道我哪里出错了吗
check below code
var dataArray=[(“名称”:“unicorn1”,“图像数据”:imgData1),(“名称”:“unicorn2”,“图像数据”:imgData2)]
阿拉莫菲尔上传(
multipartFormData:{multipartFormData in
for dat in dataArray {
multipartFormData.append(dat.imageData, withName: dat.name)
}
},
to: "https://httpbin.org/post",
encodingCompletion: { encodingResult in
switch encodingResult {
case .success(let upload, _, _):
upload.responseJSON { response in
debugPrint(response)
}
case .failure(let encodingError):
print(encodingError)
}
}
)
我解决了将
“文件[\(n)]”
更改为代码部分的问题
multipartFormData.append(mediaData, withName: "files", fileName: fname, mimeType:mimetype)
然后问题解决了
func upload() {
var mediaData = Data()
var fname = ""
var mimetype = ""
let url = URL(string: "https://myurl.com/api/attachment/upload")
let headers: HTTPHeaders = [
"Authorization": "my Authorization Token",
"Content-type": "multipart/form-data"
]
Alamofire.upload(multipartFormData: { multipartFormData in
for n in 0..<self.array.count{
mediaData = self.array[n].data
if self.array[n].type == "image"{
fname = "resim\(n).jpeg"
mimetype = "image/jpeg"
}else{
fname = "video\(n).mp4"
mimetype = "video/mp4"
}
multipartFormData.append(mediaData, withName: "files[\(n)]", fileName: fname, mimeType:mimetype)
}
},
to: url!, method: .post, headers: headers) { (result) in
switch result{
case .success(let upload, _, _):
upload.uploadProgress(closure: { (progress) in
print("uploding: \(progress.fractionCompleted)")
})
upload.responseJSON{ response in
print(response)
self.hud.dismiss()
if let err = response.error{
print(err)
return
}
}
case .failure(let error):
print("Error in upload: \(error.localizedDescription)")
}
}
func上传(){
var mediaData=Data()
var fname=“”
var mimetype=“”
让url=url(字符串:https://myurl.com/api/attachment/upload")
let头:HTTPHeaders=[
“授权”:“我的授权令牌”,
“内容类型”:“多部分/表单数据”
]
上传(multipartFormData:{multipartFormData-in-in
对于0中的n..感谢您的考虑,但我的问题是数组不是静态的。它可能是1或10。我编辑了答案,请现在检查它,如果它有帮助,然后请向上感谢您的关注,但我找到了解决方案。
func upload() {
var mediaData = Data()
var fname = ""
var mimetype = ""
let url = URL(string: "https://myurl.com/api/attachment/upload")
let headers: HTTPHeaders = [
"Authorization": "my Authorization Token",
"Content-type": "multipart/form-data"
]
Alamofire.upload(multipartFormData: { multipartFormData in
for n in 0..<self.array.count{
mediaData = self.array[n].data
if self.array[n].type == "image"{
fname = "resim\(n).jpeg"
mimetype = "image/jpeg"
}else{
fname = "video\(n).mp4"
mimetype = "video/mp4"
}
multipartFormData.append(mediaData, withName: "files[\(n)]", fileName: fname, mimeType:mimetype)
}
},
to: url!, method: .post, headers: headers) { (result) in
switch result{
case .success(let upload, _, _):
upload.uploadProgress(closure: { (progress) in
print("uploding: \(progress.fractionCompleted)")
})
upload.responseJSON{ response in
print(response)
self.hud.dismiss()
if let err = response.error{
print(err)
return
}
}
case .failure(let error):
print("Error in upload: \(error.localizedDescription)")
}
}