如何在iOS中将图像数据上传到服务器?

我想使用swift将我的图像数据存储在iOS服务器上。 我尝试下面的代码,但它不工作我必须做什么改变?

想要上传6张图片。 这是我的控制器视图,点击保存后想要存储在服务器上

func myImageUploadRequest() { let myUrl = NSURL(string: "http://easemyshop.in/upload_test/new.php"); //let myUrl = NSURL(string: "http://easemyshop.in/upload_test/new.php"); let request = NSMutableURLRequest(url:myUrl! as URL); request.httpMethod = "POST"; let param = [ "tag" : "all", "count" : "1", "shopname" : "MayurShop", "partyName" : "Paras", "cur_date" : "14-06-2017", "due_date" : "20-06-2017", "karagir" : "Santra", "remark" : "Urgent", "order_status" : "Order Reccived" /* "firstName" : "Mayur", "lastName" : "Shinde", "userId" : "101" */ ] let boundary = generateBoundaryString() request.setValue("multipart/form-data; boundary=\(boundary)", forHTTPHeaderField: "Content-Type") let imageData = UIImageJPEGRepresentation((imageView?.image!)!, 1) if(imageData==nil) { return; } request.httpBody = createBodyWithParameters(parameters: param, filePathKey: "file", imageDataKey: imageData! as NSData, boundary: boundary) as Data myActivityIndicator.isHidden = false myActivityIndicator.startAnimating(); let task = URLSession.shared.dataTask(with: request as URLRequest) { data, response, error in if error != nil { print("******** error=\(error)") return } // You can print out response object print("\n\n******* response *******\n\n") print("\(response!)") print("\n\n**************************\n\n") // Print out reponse body let responseString = NSString(data: data!, encoding: String.Encoding.utf8.rawValue) print("\n\n****** response data *******\n\n") print("\(responseString!)") print("\n\n**************************\n\n") do { let json = try JSONSerialization.jsonObject(with: data!, options: []) as? NSDictionary print("\n\n*************\n\n") print(json!) print("\n\n*************\n\n") DispatchQueue.main.async(execute: { self.myActivityIndicator.stopAnimating() self.myActivityIndicator.isHidden = true //self.imageView?.image = nil; }); } catch { print("\n\n*************ERROR******** => \(error)\n\n") } } task.resume() } 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)" } 

 func webServiceImageUploadForMyProfile(image:UIImage,url:String,method:HTTPMethod,parameters : [String:AnyObject]?,completionHandler:@escaping (JSON?,String)->Void) { let url = try! URLRequest(url: url, method: .post, headers: nil) Alamofire.upload(multipartFormData:{ multipartFormData in if let imageData = UIImageJPEGRepresentation(image, 0.6) { multipartFormData.append(imageData, withName: "image", fileName: "Profile.png", mimeType: "image/png") } for (key, value) in parameters! { multipartFormData.append(value.data(using: String.Encoding.utf8.rawValue)!, withName: key) } }, with: url, encodingCompletion: { encodingResult in switch encodingResult { case .success(let upload, , ): upload.uploadProgress(closure: { (progress) in print("Upload Progress: \(progress.fractionCompleted)") }) upload.responseJSON { response in if(response.result.isSuccess){ if let data = response.result.value{ let json = JSON(data) print(json) completionHandler(json,String()) return } }else { completionHandler(nil,(response.result.error?.localizedDescription)!) } } case .failure( _): break } }) } 

请尝试 …

请尝试使用以下代码在服务器上上传图像,同时将fileName变量值替换为您要将图像文件发送到服务器的值。

 func uploadImage(urlString:String,headers:[String:String]?,params:[String:String]?,image:UIImage?){ let boundary: String = "------VohpleBoundary4QuqLuM1cE5lMwCy" let contentType: String = "multipart/form-data; boundary=\(boundary)" let request = NSMutableURLRequest() request.url = URL(string: urlString) if let tHeaders = headers { for (key, value) in tHeaders { request.setValue(value, forHTTPHeaderField: key) } } request.httpShouldHandleCookies = false request.timeoutInterval = 60 request.httpMethod = "POST" request.setValue(contentType, forHTTPHeaderField: "Content-Type") let body = NSMutableData() if let parameters = params { for (key, value) in parameters { body.append("--\(boundary)\r\n".data(using: String.Encoding.utf8)!) body.append("Content-Disposition: form-data; name=\"\(key)\"\r\n\r\n".data(using: String.Encoding.utf8)!) body.append("\(value)\r\n".data(using: String.Encoding.utf8)!) } } //which field you have to sent image on server let fileName: String = "file" if image != nil { body.append("--\(boundary)\r\n".data(using: String.Encoding.utf8)!) body.append("Content-Disposition: form-data; name=\"\(fileName)\"; filename=\"image.png\"\r\n".data(using: String.Encoding.utf8)!) body.append("Content-Type:image/png\r\n\r\n".data(using: String.Encoding.utf8)!) body.append(UIImagePNGRepresentation(image!)!) body.append("\r\n".data(using: String.Encoding.utf8)!) } body.append("--\(boundary)--\r\n".data(using: String.Encoding.utf8)!) request.httpBody = body as Data let session = URLSession.shared let task = session.dataTask(with: request as URLRequest) { (data, response, error) in if(error != nil){ print(String(data: data!, encoding: .utf8) ?? "No response from server") } } task.resume() } 

在您的PHP服务器上,您可以获得这样的文件名