I want to store my image data on server in iOS using swift. i tried following code, but its not working what changes i have to do ??
Want to upload 6 images.this is my controller view, after clicking save it want to store at server
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)"
}
Please give a try with below code to upload the image on your server, also replace fileName variable value with one in which you want to send the image file to your server.
at your PHP server, you can get your file name like this
please try ...