我正在学习“将图像上传到服务器”,但当我尝试上传多个图像时,总是无法报告(JSON错误,来自iOS设备上的Xcode警报),似乎错误在PHP端?但我是新来的,所以任何人都可以帮我找到解决办法。Xcode:
>
httpBody函数
func createBodyWithParameters(参数:[字符串:任意]?,边界:字符串)-
if parameters != nil {
for (key, value) in parameters! {
body.append("--\(boundary)\r\n".data(using: .utf8)!)
body.append("Content-Disposition: form-data; name=\"\(key)\"\r\n\r\n".data(using: .utf8)!)
body.append("\(value)\r\n".data(using: .utf8)!)
}
}
for image in images {
let filename = "\(NSUUID().uuidString).jpg"
let imageData = image.jpegData(compressionQuality: 1)
let lineOne = "--" + boundary + "\r\n"
body.append(lineOne.data(using: .utf8, allowLossyConversion: false)!)
let lineTwo = "Content-Disposition: form-data; name=\"files\"; filename=\"\(filename)\"\r\n"
body.append(lineTwo.data(using: .utf8, allowLossyConversion: false)!)
let lineThree = "Content-Type: image/jpg\r\n\r\n"
body.append(lineThree.data(using: .utf8, allowLossyConversion: false)!)
body.append(imageData!)
let lineFive = "\r\n"
body.append(lineFive.data(using: .utf8, allowLossyConversion: false)!)
}
let lineSix = "--" + boundary + "--\r\n"
body.append(lineSix.data(using: .utf8, allowLossyConversion: false)!)
return body
}
http请求函数
func createRequest(parameters: [String : Any] , url : URL) -> URLRequest {
var request = URLRequest(url: url)
request.httpMethod = "POST"
let boundary = "Boundary-\(NSUUID().uuidString)"
request.setValue("multipart/form-data; boundary=\(boundary)", forHTTPHeaderField: "Content-Type")
request.httpBody = createBodyWithParameters(parameters: parameters, boundary: boundary) as Data
return request
}
多图像上载函数func uploadPostWithMultipleImages(){
guard let id = currentUser?["id"], let text = postTextView.text else {
return
}
// declaring keys and values to be sent to the server
let parameters = ["user_id": id, "text": text, "files": images]
// declaring URL and request
let url = URL(string: "http://localhost/projectExample/uploadPostMultipleImages.php")!
let request = createRequest(parameters: parameters, url: url)
URLSession.shared.dataTask(with: request) { (data, response, error) in
DispatchQueue.main.async {
// if error
if error != nil {
Helper().showAlert(title: "Server Error", message: error!.localizedDescription, in: self)
return
}
// access data / json
do {
// safe mode of accessing received data from the server
guard let data = data else {
Helper().showAlert(title: "Data Error", message: error!.localizedDescription, in: self)
return
}
// converting data to JSON
let json = try JSONSerialization.jsonObject(with: data, options: .allowFragments) as? NSDictionary
// safe mode of accessing / casting JSON
guard let parsedJSON = json else {
return
}
// if post is uploaded successfully -> come back to HomeVC, else -> show error message
if parsedJSON["status"] as! String == "200" {
// post notification in order to update the posts of the user in other viewControllers
NotificationCenter.default.post(name: NSNotification.Name(rawValue: "uploadPost"), object: nil)
// comeback
self.dismiss(animated: true, completion: nil)
} else {
Helper().showAlert(title: "Error", message: parsedJSON["message"] as! String, in: self)
return
}
// error while accessing data / json
} catch {
Helper().showAlert(title: "JSON Error", message: error.localizedDescription, in: self)
return
}
}
}.resume()
}
PHP上传代码
// generating absolute path to the folder for every user with his unique id
##############################################################################################################
//如果(!file_exists($folder)){mkdir($folder,0777,true);}或者{$return['folder_message']='无法创建目录';}则创建不存在的fodler
foreach($_FILES['files']['name'] as $key =>$value) {
$file = $_FILES['files']['name'][$key];
$file_tmp = $_FILES['files']['tmp_name'][$key];
// path to the file. Full path of the file
$path = $folder . '/' . basename($file);
if (move_uploaded_file($file_tmp, $path)) {
// creating URL link to the image uploaded
$pictures .= 'http://localhost/projectExample/posts/' . $user_id . '/' . $file. " ";
$return['pictures'] = $pictures;
}
}//弗雷奇
//将详细信息插入到数据库中
我使用了您的swift代码并成功上传了图像,所以我确信是您的PHP代码出现了一些错误。请确保返回的json格式正确,如:
echo '{"code" : 200}'
我正在尝试上传图像与修改库。我就是这样上传的: 请求代码: 答复: 如果我是通过客户端浏览器(如postman或DHC)发布的,则请求与上面相同,并且我得到一个成功的XML响应。 请看我在邮递员客户端上尝试的截图。它是成功的。
我正在尝试上载3个图像字段,将它们存储在我的数据库中,并将上载的文件移动到文件夹中。 目前,“image1”、“image2”、“image3”、“image4”字段正在插入MySQL数据库,但只有“image1”正在上载并移动到我的文件夹中。 这是我的密码: 如何移动文件夹中的其他图像(“image2”、“image3”、“image4”)? 我在代码中犯了什么错误?你能解释一下我哪里做错了吗?
问题内容: 使用AJAX上传多张图片时遇到很多问题。我写这段代码: 的HTML jQuery / AJAX 我尝试了各种版本,但从未成功通过ajax发送多个数据。我已经按照这种方式尝试了以上所见,现在我仅获得POST信息。我知道为什么会收到POST,但我需要发送FILES信息,而且我不知道我哪里写错了。 我不是第一次使用Ajax,经常在大多数项目中使用它,但是我从未使用过发送多个文件,这现在困扰着
一旦用户点击掩码映像,我们就允许用户上传自定义映像,如果只有一个掩码映像:https://codepen.io/kidsdial/pen/jjbvon就可以正常工作 要求: 但是如果有多个掩码映像,那么用户也应该能够上传所有掩码映像上的自定义映像[类似https://codepen.io/kidsdial/pen/rrmypr],但是现在它只适用于单个映像.... 2图像代码页:https://c
一旦用户点击掩码映像,我们就允许用户上传自定义映像,如果只有一个掩码映像:https://codepen.io/kidsdial/pen/jjbvon就可以正常工作 要求: 但是如果有多个掩码映像,那么用户也应该能够上传所有掩码映像上的自定义映像[类似https://codepen.io/kidsdial/pen/rrmypr],但是现在它只适用于单个映像.... 2图像代码页:https://c
问题内容: 我已经尝试进行这项工作了一段时间了。但是我似乎无法使其正常工作。我想只使用一个输入就拥有多张图片上传表格。 这是我的upload.php 如果我把线 使用相应的结束括号,它似乎可以正常工作。图像完美上传。但事实是,它只允许我上传一个。 请我真的需要您的专业知识。谢谢 问题答案: extract($_POST); $error=array(); $extension=array(“jpe