php - Alamofire and PHP Upload Images
问题描述
I'm trying to upload images selected from IPhone gallery, I can send the request, but the images never get on my web server. I dont know if problem is on the request or on my script in php.
This swift code:
func enviarImg(){
let imageParamName = "image"
let parameters = ["chave": "valor"]
Alamofire.upload(multipartFormData: { multipartFormData in
// import image to request
for imageData in self.imagens {
let data = UIImageJPEGRepresentation(imageData, 1)
multipartFormData.append(data!, withName: "\(imageParamName)[]", fileName: "\(Date().timeIntervalSince1970).jpeg", mimeType: "image/jpeg")
}
for (key, value) in parameters {
multipartFormData.append(value.data(using: String.Encoding.utf8)!, withName: key)
}
},
to: url,
encodingCompletion: { encodingResult in
switch encodingResult {
case .success(let upload, _, _):
upload.responseJSON { response in
print("success", response.result.value as Any)
}
case .failure(let encodingError):
print(encodingError)
}
})
}
And my php code:
<?php
$i = 0;
$result = array();
while ($i <= 2){
move_uploaded_file($_FILES[$i]["tmp_name"], $_FILES[$i]["name"]);
$result["files"] = $_FILES[$i]["name"];
$i++;
}
$result["message"] = "Success!";
$result["post"] = $_POST;
echo json_encode($result);
?>
The response from php script:
success Optional({
files = "<null>";
message = "Success!";
post = (
);
})
Thanks in advance!
解决方案
看起来您的参数名称不匹配:
您在 Swift 代码中使用的名称是“image[]”,但在 PHP 代码中它完全不同。
它应该是这样的
<?php
$uploads_dir = '/uploads';
foreach ($_FILES["image"]["error"] as $key => $error) {
if ($error == UPLOAD_ERR_OK) {
$tmp_name = $_FILES["image"]["tmp_name"][$key];
$name = basename($_FILES["image"]["name"][$key]);
move_uploaded_file($tmp_name, "$uploads_dir/$name");
}
}
推荐阅读
- c# - 过滤不等哈希集列表
- python - 如何在服务器中的其他用户计算机中使用用 discord .py 编写的 python 程序阻止网站?
- excel - VBA:是否有一种简单的方法可以覆盖剪切/粘贴快捷键(ctrl x、ctrl v)以仅移动值和字体颜色/大小,而忽略填充和边框?
- r - R闪亮的应用程序错误消息中缺少错误行号
- optimization - 使用 Anylogic 进行优化
- r - 从不同来源安装软件包会产生不同的性能
- elasticsearch - 使用查询参数时,Kibana / Elasticsearch 查询未返回预期结果
- python - Keras 的 model.predict() 给出带有 softmax 激活层的二进制输出
- ios - 在 iOS 中播放实时广播流的 AVPlayer 替代方案
- excel - VBA:当范围内的值太小时自动隐藏列