php - Alamofire 和 PHP 上传图像

标签 php swift alamofire

我正在尝试上传从 iPhone 图库中选择的图像,我可以发送请求,但图像永远不会到达我的网络服务器。我不知道问题是出在请求上还是出在我的 php 脚本上。

这个swift代码:

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)
                        }
    })
}

还有我的php代码:

<?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);
 ?>

来自 php 脚本的响应:

success Optional({
  files = "<null>";
  message = "Success!";
  post =     (
  );
})

提前致谢!

最佳答案

您的参数名称似乎不匹配:

您在 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");
         }
    }

关于php - Alamofire 和 PHP 上传图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52333858/

相关文章:

ios - UITableView 的模糊和活力效果

ios - 如何使用 alamofire 通过基本身份验证上传图像?

php - 如何删除 SQL 数据末尾的回车键并使用 PHP 将其导出到 Excel

php - 调用非对象的成员函数 bindParam()

swift - 我们是否需要在每个嵌套闭包内重复 `guard let self = self else { return }` 以保持强大的 self ?

swift 3 错误 : Type 'Any' has no subscript members

php - 如何使用 Alamofire 将图像从 ios 上传到服务器

php - MySql Regexp 从用户输入中搜索

php - 无法在 Twitter API 搜索中获得去年的结果

ios - 带有来自 API 的图像的 Swift tableView 在滚动时滞后