Reputation: 23
I am unable to read parameters in php with a multipartform-data upload. I am using Alamofire 4 and swift 3. Below is my code:
var parameters:[String: String]
parameters = [
"ID": self.fieldNote.ID,
"createdBy": self.fieldNote.createdBy,
"workOrderID": self.fieldNote.workOrderID,
"customerID": self.fieldNote.customerID,
"note" : self.fieldNote.note,
"status":"0",
"imageEdit":String(self.imageEdit)
]
print("parameters = \(parameters)")
Alamofire.upload(
multipartFormData: { multipartFormData in
for (key, value) in parameters {
multipartFormData.append(value.data(using: .utf8)!, withName: key)
}
multipartFormData.append(UIImageJPEGRepresentation(self.imageView.image!, 1)!, withName: "pic", fileName: "user.jpg", mimeType: "image/jpeg")
},
to: "http://www.___.com/cp/app/functions/upload.php",
encodingCompletion: { encodingResult in
switch encodingResult {
case .success(let upload, _, _):
upload.responseJSON { response in
debugPrint("SUCCESS RESPONSE: \(response)")
}
upload.responseString { response in
debugPrint("SUCCESS RESPONSE: \(response)")
}
case .failure(let encodingError):
print("ERROR RESPONSE: \(encodingError)")
}
}
)
php:
foreach ($_FILES as $key => $value) {
echo "<tr>";
echo "<td>";
echo '$key = ' . $key;
echo "</td>";
echo "<td>";
echo '$value = ' . $value;
echo "</td>";
echo "</tr>";
}
Just trying to echo passed parameters before moving on with php work. Any help would be great. Thanks
Upvotes: 0
Views: 183
Reputation: 23
I figured out working syntax.
var parameters:[String:String]
parameters = [
"ID": self.fieldNote.ID,
"createdBy": self.fieldNote.createdBy,
"workOrderID": self.fieldNote.workOrderID,
"customerID": self.fieldNote.customerID,
"note" : self.fieldNote.note,
"status":"0",
"imageEdit":String(self.imageEdit)
]
print("parameters = \(parameters)")
let URL = try! URLRequest(url: "http://www.___.com/cp/app/functions/upload.php", method: .post, headers: nil)
Alamofire.upload(multipartFormData: { (multipartFormData) in
print("alamofire upload")
if(self.imagePicked == true || self.imageEdit == true){
multipartFormData.append(UIImageJPEGRepresentation(self.imageView.image!, 1)!, withName: "pic", fileName: "swift_file.jpeg", mimeType: "image/jpg")
}
for (key, value) in parameters {
multipartFormData.append(value.data(using: String.Encoding.utf8)!, withName: key)
}
}, with: URL, encodingCompletion: { (result) in
print("result = \(result)")
switch result {
case .success(let upload, _, _):
upload.uploadProgress(closure: { (Progress) in
print("Upload Progress: \(Progress.fractionCompleted)")
})
upload.responseJSON { response in
print(response.request ?? "") // original URL request
print(response.response ?? "") // URL response
print(response.data ?? "") // server data
print(response.result) // result of response serialization
if let JSON = response.result.value {
print("JSON: \(JSON)")
}
}
upload.responseString { response in
debugPrint("SUCCESS RESPONSE: \(response)")
}
case .failure(let encodingError):
print(encodingError)
}
})
php:
$ID = intval($_POST['ID']);
$note = $db->real_escape_string($_POST['note']);
$customerID = intval($_POST['customerID']);
$woID = intval($_POST['workOrderID']);
$woItemID = intval($_POST['workOrderItemID']);
$createdBy = intval($_POST['createdBy']);
$status = intval($_POST['status']);
$imageEdit = boolval($_POST['imageEdit']);
// check $_FILES['pic'] not empty
if(!isset($_FILES['pic']) || !is_uploaded_file($_FILES['pic']['tmp_name']))
{
$hasImg = false;
} else {
$hasImg = true;
}
Upvotes: 1