检出用于上传单个图像的代码,但无法在同一键下以阵列的形式上传多个图像。
在以下代码中, 当我将一幅图像发送到服务器时,它工作完美。 ->我想在不使用alamofire或其他第三方库的情况下找到数组中多个图像的答案。
func imageUploadRequest(IMAGE_ARRAY: [UIImage],uploadUrl: NSURL) {
myloader.showLoader(controller: self)
let param = ["title":"ds","category_id":"5","description":"gdfjghjdsfgksd","user_id":"66","color":"red"]
let request = NSMutableURLRequest(url:uploadUrl as URL)
request.httpMethod = "POST"
let boundary = generateBoundaryString()
request.setvalue("multipart/form-data; boundary=\(boundary)",forHTTPHeaderField: "Content-Type")
//let imageData = uiimagejpegrepresentation(imageView.imageOrientation,0.1)
for item in IMAGE_ARRAY
{
let imageData = item.jpegData(compressionQuality: 0.01)
if(imageData==nil) { return; }
request.httpBody = createBodyWithParameters(parameters: param as [String : Any],filePathKey: "files[]",cv : imageData! as NSData,boundary: boundary) as Data
}
// myactivityIndicator.startAnimating();
let task = URLSession.shared.dataTask(with: request as URLRequest,completionHandler: {
(data,response,error) -> Void in
if let data = data {
DispatchQueue.main.async { // Update UI
self.myloader.removeLoader(controller: self)
let decoder = JSONDecoder()
let obj = try! decoder.decode(GetResponse_Otp.self,from: data)
}
}
})
task.resume()
}
func createBodyWithParameters(parameters: [String: Any]?,filePathKey: String?,cv: NSData,boundary: String) -> NSData {
let body = NSMutableData();
if parameters != nil {
for (key,value) in parameters! {
body.appendString("--\(boundary)\r\n")
body.appendString("Content-Disposition: form-data; name=\"\(key)\"\r\n\r\n")
body.appendString("\(value)\r\n")
}
}
let filename = "\(Date().timeIntervalSince1970).jpeg"
let mimetype = "image/png"
body.appendString("--\(boundary)\r\n")
body.appendString("Content-Disposition: form-data; name=\"\(filePathKey!)\"; filename=\"\(filename)\"\r\n")
body.appendString("Content-Type: \(mimetype)\r\n\r\n")
body.append(cv as Data)
body.appendString("\r\n")
body.appendString("--\(boundary)--\r\n")
return body
}
func generateBoundaryString() -> String {
return "Boundary-\(NSUUID().uuidString)"
}
// extension for impage uploading
}