我想使用Alamofire将多个图像上传到服务器。
一切正常,但只上传了一张图片。我需要上传多个图像或更多图像,具体取决于登录的用户。我正在使用名为Exception while loading assemblies: System.IO.FileNotFoundException: Could not load assembly 'Newtonsoft.Json
的库来从图库或相机中选择图像。
DKImagePickerController
答案 0 :(得分:2)
有两种方法可以发送多个文件。
您可以为每个文件使用唯一的name
(在这种情况下,name
值image0
,image1
等等):
for (index, image) in images.enumerated() {
multipartFormData.append(UIImagePNGRepresentation(image)!, withName: "image\(index)", fileName: "image\(index).png", mimeType: "image/png")
}
这导致$_FILES
:
$_FILES = {
image0 = {
error = 0;
name = "image0.png";
size = 23578;
"tmp_name" = "/tmp/php1bc19G";
type = "image/png";
};
image1 = {
error = 0;
name = "image1.png";
size = 338685;
"tmp_name" = "/tmp/phpcGS5d6";
type = "image/png";
};
};
(忽略此输出的格式,而只是关注此嵌套目录结构中的键/值组合:就此输出而言,我将Web服务作为JSON发送回$_FILES
,I然后让Alamofire解析它,这就是在我的客户端应用程序中输出结果字典的方式。)
或者,您可以在name
之后使用数组,在字段名称后添加[]
,例如字面image[]
:
for (index, image) in images.enumerated() {
multipartFormData.append(UIImagePNGRepresentation(image)!, withName: "image[]", fileName: "image\(index).png", mimeType: "image/png")
}
这导致在服务器上收到以下内容:
$_FILES = {
image = {
error = (
0,
0
);
name = (
"image0.png",
"image1.png"
);
size = (
23578,
338685
);
"tmp_name" = (
"/tmp/phpI4XrwU",
"/tmp/php3kVhhl"
);
type = (
"image/png",
"image/png"
);
};
};
这只取决于Web服务期望创建请求的方式。