通过Alamofire上传文件并使用Slim PHP检索服务器端

时间:2017-07-02 21:43:08

标签: php swift alamofire slim

我尝试使用AlamofireLink)(Swift 3.0)解决有关文件上传的问题,并使用Slim PHPLink)微框架检索服务器端。

我正在尝试使用

上传从iPhone拍摄的照片
Alamofire.upload(multipartFormData:{ 
multipartFormData in
    multipartFormData.append("value".data(/* ... */)!, withName :"key")

   var idx = 1;
   for imageRepresentation in imageData {
       let pictureName = "pictures[]"
       multipartFormData.append(imageRepresentation, withName: pictureName, mimeType: "image/jpeg")
       idx += 1
   }

 },
 to: uploadUrl,
 method:.post,
 headers: httpHeaders,
 encodingCompletion: /* ... */

我几乎可以肯定这个脚本工作正常,因为当我点击https://httpbin.org/post时,我会收到我上传的编码data base 64图片,所以我很确定问题来了从我的服务器端代码。

所以,正如我所说,我正在使用 Slim PHP Link)服务器端与此路由

$this->post('/upload', function ($request, $response, $args) {

        $request->getParsedBody(); //null
        $request->getQueryParams(); // []
        $request->getBody(); // {}
        $request->getUploadedFiles(); // []

        return /*Some JSON */

    })->setName('upload');

我错过了什么吗?有什么我不明白的吗? 我已经尝试了

最奇怪的是,当从Paw API Explorer

执行时,脚本就像魅力一样

任何帮助都会非常感激!感谢。

1 个答案:

答案 0 :(得分:0)

用于上传从照片库中选择的图像

在Swift 3和Alamofire 4中

以下是使用Alamofire

进行上传的完整实施方法
  1. 将以下内容添加到ViewController类:

    UIImagePickerControllerDelegateUINavigationControllerDelegate

  2. 创建一个按钮:

  3. 首先创建一个按钮并在其中实现以下方法以进行选择器视图

    @IBAction func btnSelectProfileImageClicked(_ sender: Any) {
    
        let ImagePicker = UIImagePickerController()
        ImagePicker.delegate = self
        ImagePicker.sourceType = UIImagePickerControllerSourceType.photoLibrary
    
        self.present(ImagePicker, animated: true, completion: nil)
    
    
    }
    
    1. 然后实现以下UIPicker方法:

      func imagePickerController( _ picker: UIImagePickerController,didFinishPickingMediaWithInfo info:[String : Any] )
      {Imgprofile.image = info[UIImagePickerControllerOriginalImage] as? UIImage
      self.dismiss(animated: true, completion: nil)}
      
    2. 制作另一个按钮,使用Alamofire将数据传递到URL并向其提供@IBAction个出口:

    3. 输入以下数据

       @IBAction func btnUpdateProfileSelected(_ sender: Any) {
      
          Alamofire.upload(multipartFormData: { (multipartFormData) in
              multipartFormData.append(UIImageJPEGRepresentation(self.Imgprofile.image!, 1)!, withName: "Prescription", fileName: "Profile_Image.jpeg", mimeType: "image/jpeg")
          }, to:" Your URL Here where You want to Upload")
          { (result) in
              switch result {
              case .success(let upload, _, _):
                  print(result)
      
                  upload.uploadProgress(closure: { (progress) in
                      print(progress)
                  })
      
                  upload.responseJSON { response in
                      //print response.result
                      print(response);
                  }
      
              case .failure(let encodingError):
                  print(encodingError);
              }
          }
      }
      

      多数人

      希望这会有所帮助

        

      对于完整示例代码或有任何疑问,请发表评论。我会提供给你   这个示例代码。其中包括获取以及   使用Alamofire上传数据。

      由于