【发布时间】:2019-01-29 15:39:01
【问题描述】:
在我的 swift 应用程序中,我有以下功能:
func imageUploadRequest(imageView: UIImageView, uploadUrl: NSURL, param: [String:String]?) {
let request = NSMutableURLRequest(url:uploadURL! as URL);
request.httpMethod = "POST"
let postParameters = "email=" + String(email)
request.httpBody = postParameters.data(using: String.Encoding.utf8)
let boundary = generateBoundaryString()
request.setValue("multipart/form-data; boundary=\(boundary)", forHTTPHeaderField: "Content-Type")
let imageData = UIImageJPEGRepresentation(imageView1.image!, 1.0)
if (imageData == nil) { return }
request.httpBody = createBodyWithParameters(parameters: param, filePathKey: "file", imageDataKey: imageData! as NSData, boundary: boundary) as Data
let task = URLSession.shared.dataTask(with: request as URLRequest, completionHandler: {
(data, response, error) -> Void in
if let data = data {
_ = try!JSONSerialization.jsonObject(with: data, options: .mutableContainers) as? NSDictionary
} else if let error = error {
print(error.localizedDescription)
}
})
task.resume()
}
func createBodyWithParameters(parameters: [String: String]?, filePathKey: String?, imageDataKey: NSData, boundary: String) -> NSData { 让 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 = profilePicturePath
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 downloadImage(url: URL) {
getDataFromUrl(url: url) { data, response, error in
guard let data = data, error == nil else { return }
print(response?.suggestedFilename ?? url.lastPathComponent)
DispatchQueue.main.async() {
self.imageView1.image = UIImage(data: data)
self.tableView.reloadData()
}
}
}
USER_IMG_SET.php
$email = $_POST['email'];
//$email = "galileogalilei@yahoo.com";
$target_dir = "../usersAccountData/".$email;
if(!file_exists($target_dir)) {
mkdir($target_dir, 0755, true);
}
$target_dir = $target_dir . "/" . basename($_FILES["file"]["name"]);
if (move_uploaded_file($_FILES["file"]["tmp_name"], $target_dir)) {
echo json_encode([
"Message" => "The file ". basename( $_FILES["file"]["name"]). " has been uploaded.",
"Status" => "OK",
"userId" => $_REQUEST["userId"]
]);
} else {
echo json_encode([
"Message" => "Sorry, there was an error uploading your file.",
"Status" => "Error",
"userId" => $_REQUEST["userId"]
]);
}
我上传了图像数据,我还想用相同的请求在 php ($email = $_POST['email'];) 中上传用户电子邮件。 我该怎么做?
因为我没有其他细节要写! « Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam eaque ipsa, quae ab illoinvente veritatis et quasi architecto beatae vitae dicta sunt, explicabo。 Nemo enim ipsam voluptatem, quia voluptas sit, aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos, qui ratione voluptatem sequi nesciunt, neque porro quisquam est, qui dolorem ipsum, quia dolor sit, amet, consectetur, adipisci velit, non numquam eius modi tempora incidunt, ut labore et dolore magnam aliquam quaerat voluptatem。 »
【问题讨论】:
-
您没有显示
createBodyWithParameters(parameters:filePathKey:imageDataKey:boundary:)的定义。此外,您没有显示您如何称呼您的imageUploadRequest(imageView:uploadUrl:param:)。调用该方法时,您可能需要将["email": email]传递给param:。