看来这个问题以前已经问过,但没有答案对我很有帮助。我有一个应用程序,我创建了自己的ImagePicker以从用户的相机胶卷中选择多个图像。我现在需要将这些图像上传到PHP脚本。当我只需要上传一张图片时,一切正常。事情是,我不知道如何更改我的代码上传多个图像。从Swift上传多张图片到PHP
码开始后(仅上传相关的最重要的代码)
let param = ["request":"uploadImagesAndParams", "someParam": self.txtSomeTextField.text!]
let boundary = generateBoundaryString()
request.setValue("multipart/form-data; boundary=\(boundary)", forHTTPHeaderField: "Content-Type")
//Here I am just selecting the first image in my UIImage array (selectedImages). I need to be able to select all of them and upload it.
let imageData = UIImageJPEGRepresentation((selectedImages?[0])!, 1)
if(imageData == nil) { return; }
request.httpBody = createBodyWithParameters(parameters: param,
filePathKey: "image",
imageDataKey: imageData! as NSData,
boundary: boundary) as Data
代码上传
//Upload Function
func createBodyWithParameters(parameters: [String: String]?, filePathKey: String?, imageDataKey: NSData, boundary: String) -> NSData {
let body = NSMutableData();
if parameters != nil {
for (key, value) in parameters! {
body.appendString(string: "--\(boundary)\r\n")
body.appendString(string: "Content-Disposition: form-data; name=\"\(key)\"\r\n\r\n")
body.appendString(string: "\(value)\r\n")
}
}
let filename = "user-profile.jpg"
let mimetype = "image/jpg"
body.appendString(string: "--\(boundary)\r\n")
body.appendString(string: "Content-Disposition: form-data; name=\"\(filePathKey!)\"; filename=\"\(filename)\"\r\n")
body.appendString(string: "Content-Type: \(mimetype)\r\n\r\n")
body.append(imageDataKey as Data)
body.appendString(string: "\r\n")
body.appendString(string: "--\(boundary)--\r\n")
return body
}
func generateBoundaryString() -> String {
return "Boundary-\(NSUUID().uuidString)"
}
检查这个问题,答案https://stackoverflow.com/questions/43972651/multiple-file-upload-with-array -of-参数-使用-alamofire/43972778#43972778。它应该给你如何实现这一目标的总体思路。 –
这个问题是使用Alamofire。 –
答案专注于'Operation'而不是'Alamofire'。你可以使用这个概念。其余的是实现细节。 –