当前位置: 首页 > 知识库问答 >
问题:

Alamofire Swift 3 PHP上载图像不工作

方嘉言
2023-03-14

我试图上传一个图像使用Alamofire和PHP在我的服务器上,我在这里检查了所有不同的问题,但出于某种原因,它不会工作。我用超文本标记语言测试了我的PHP文件,它成功地上传了一个图像,所以它缩小到我的swft代码。

迅速:

    let URL = "http://example.com/post_pic.php"
    let imageData = UIImageJPEGRepresentation(imageView.image!, 1)


    Alamofire.upload(multipartFormData: { (multipartFormData) in
        multipartFormData.append(imageData!, withName: "imageFile", mimeType: "image/jpeg")
    }, to:URL)
    { (result) in
        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
                //                        self.showSuccesAlert()
                //self.removeImage("frame", fileExtension: "txt")
                if let JSON = response.result.value {
                    print("JSON: \(JSON)")
                }

            }

        case .failure(let encodingError):
            print("Failure:")
            print(encodingError)
        }

    }

PHP:

if(isset($_FILES['imageFile'])){
    $errors= array();
    $file_name = $_FILES['imageFile']['name'];
    $file_size =$_FILES['imageFile']['size'];
    $file_tmp =$_FILES['imageFile']['tmp_name'];
    $file_type=$_FILES['imageFile']['type'];
    $file_ext=strtolower(end(explode('.',$_FILES['imageFile']['name'])));
    print_r($_FILES['imageFile']);

    if(empty($errors)==true){
      move_uploaded_file($file_tmp,"images/".$file_name);
    }
    else
    {
      echo '{"response":"file_move_error"}';
    }   
}
else
{
        echo '{"response":"file_error"}';

}

我得到的回应是:

 Optional(<NSHTTPURLResponse: 0x17022df20> { URL: http://example.com/post_pic.php } { 
      status code: 200, headers {
     Connection = "Keep-Alive";
     "Content-Length" = 25;
     "Content-Type" = "application/json";
     Date = "Wed, 25 Jan 2017 10:16:29 GMT";
     "Keep-Alive" = "timeout=5, max=100";
     Server = "Apache/2.4.7 (Ubuntu)";
     "X-Powered-By" = "PHP/5.5.9-1ubuntu4.20";
 } })
      Optional(25 bytes)
      SUCCESS
      JSON: {
          response = "file_error";
      }

共有1个答案

濮书
2023-03-14

我可以在我的应用程序中使用此代码

let URL = "http://example.com/post_pic.php"
let imageData = UIImageJPEGRepresentation(imageView.image!, 1)


    upload(multipartFormData: { multipartFormData in
                    multipartFormData.append(imageData!, withName: "imageFile", fileName: "file.jpg", mimeType: "image/jpeg")
        },
            to: URL, method: .post,
            encodingCompletion: { encodingResult in

                switch encodingResult {
                case .success(let upload, _, _):


                    upload.validate()
                    upload.responseJSON { response in


                        if response.result.error != nil {
                            print("failure")
                            UIAlertView(title: "Fail", message: "Please retry again.", delegate: nil, cancelButtonTitle: "Ok").show()
                        } else {
                            print("success")


                        }
                    }
                case .failure(let encodingError):
                    print(encodingError)

                }
        }
        )
 类似资料:
  • 我的视图中有一个用于上传图像的输入字段: 我已经在我的公共文件夹中创建了文件夹上传,在我的控制器中,我试图上传这样的文件: 当我提交表单并上传图片时,没有任何东西被上传到文件夹上传,我得到了错误: SQLSTATE[HY000]:一般错误:1364字段“image”没有默认值

  • 我在Node.js应用程序中使用multer和cloudinary上传图像。当我处于开发模式时,它工作得非常好,但在部署到heroku后,我在浏览器控制台中得到错误,因为服务器响应的状态是503(服务不可用)。当我检查heroku日志时,它显示为at=error code=h12desc=“request timeout”method=post path=“/api/users/upload/av

  • 出于某种原因,我的图像图标正在出现错误,尽管我试图修复它... 我读过这个问题,答案建议在mitmap文件夹中创建图像图标。因此,我将代码行从更改为 您可以看到图像上有一个错误。为什么会这样? 我曾试图: 清洁项目 重建项目 确保@mitmap/ic_启动器确实存在: 即使在我所有的尝试之后,错误仍然存在。我已经被困在这个问题上好几个小时了,我的脑袋都转不过来了。这是我的代码还是android s

  • 你好,请帮我在图像视图中需要上传当前图像 我需要上传电话中的图像捕获`公共类MainActivity extends Activity{Button Button;private static final int CAMERA_REQUEST=1888;private ImageView ImageView; //在main中找到按钮。xml按钮=(按钮)findViewById(R.id.upl

  • 我有一个表单,我正在用图像提交数据。但当我单击提交按钮时,我得到以下错误: org.springframework.validation.bindexception:org.springframework.validation.BeanPropertyBindingResult:1错误字段“file data”字段上对象“employee”中的字段错误:拒绝值[org.springframewor

  • 问题内容: 我希望能够在上传文件之前预览文件(图像)。预览操作应在浏览器中全部执行,而无需使用Ajax上载图像。 我怎样才能做到这一点? 问题答案: 请看下面的示例代码: