2017-11-07 8 views
0

私はiOSの初心者で、Alamofireを使って画像をアップロードしています。私が書いたコードは次のとおりです。Swift - HTTPロードが失敗しました(エラーコード:-1005 [4:-4])、alamofire経由で画像をアップロードしています。

let image = imageView.image 
     let imgData = UIImageJPEGRepresentation(image!, 0.2)! 
     let headers: HTTPHeaders = [ 
      "x-access-token": "######", 
      "Accept": "application/json" 
     ] 
     let parameters = ["profile_picture": "kinza"] 
     let url = try! URLRequest(url: URL(string:"######")!, method: .post, headers: headers) 

     Alamofire.upload(multipartFormData: { multipartFormData in 
      multipartFormData.append(imgData, withName: "profile_picture",fileName: "kinza.jpg", mimeType: "image/jpg") 
      for (key, value) in parameters { 
       multipartFormData.append(value.data(using: String.Encoding.utf8)!, withName: key) 
      } 
     }, 
         with: 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.result.value) 
       } 

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

私は、次のログを取得、このコードを実行すると:

2017-11-07 11:03:21.595826+0500 TestApiProject[2457:51089] [] nw_socket_get_input_frames recvmsg(fd 6, 4096 bytes): [54] Connection reset by peer 
2017-11-07 11:03:21.596094+0500 TestApiProject[2457:51089] TIC Read Status [1:0x6040003612c0]: 1:54 
2017-11-07 11:03:21.596495+0500 TestApiProject[2457:51089] [] nw_socket_output_finished shutdown(6, SHUT_WR): [57] Socket is not connected 
2017-11-07 11:03:21.597203+0500 TestApiProject[2457:51089] Task <9A25E63E-EC42-419C-A0B7-02998177EDCA>.<1> HTTP load failed (error code: -1005 [4:-4]) 
2017-11-07 11:03:21.597681+0500 TestApiProject[2457:51091] Task <9A25E63E-EC42-419C-A0B7-02998177EDCA>.<1> finished with error - code: -1005 
Upload Progress: 1.0 
nil 

それは検索しましたが、エラーコード」に固有の何かを見つけることができませんでしたが-1005 'どうすれば解決できますか?私は何かが恋しい?

私はそれについての特定の質問がある:

  • HTTPロードが失敗した場合、どのようにコントロールが Alamofire要求の成功ブロックに行きましたか?
  • response.result.valueの値はnilです。私の エンドまたはサーバ側で何か問題がありますか?
  • info.plistにいくつかの属性を追加する必要がありますか?こちらは現在 です。

enter image description here

任意の助けもいただければ幸いです。

+0

https://stackoverflow.com/質問/ 46069800/how-to-upload-image-alamofire-with-tokenparameters/46070253#46070253 –

+0

@SalmanGhumsani あなたの答えに使用されているアプローチは、私が使っているアプローチとどう違うのですか? – kinza

+0

だからこそ、これはコメントであり、答えではありません。そこから参考になると思った。 –

答えて

0

これを試してみてください。..

let image = imageView.image 
     let imgData = UIImageJPEGRepresentation(image, 0.2)! 

     let parameters = ["profile_picture": "kinza"] 

     Alamofire.upload(multipartFormData: { multipartFormData in 
      multipartFormData.append(imgData, withName: "profile_picture",fileName: "kinza.jpg", mimeType: "image/jpg") 
      for (key, value) in parameters { 
       multipartFormData.append(value.data(using: String.Encoding.utf8)!, withName: key) 
      } 
     },to:"http://YOUR 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.result.value!) 
        } 

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

それは私の作品です。..

+0

このコードにヘッダーを組み込む方法は?ヘッダーにも値を送る必要があります。 – kinza

0

を、それは私のために働いたとして、あなたは、このメソッドを使用することができます。

fileprivate func p_uploadImage(_ image: UIImage) { 

     let parameters = ["channelName" : "Your text param"] 
     let fileData = UIImageJPEGRepresentation(image, 0.2) 
     let URL2 = try! URLRequest(url: "Your URL", method: .post, headers: ["Authorization" : authKey!]) 

     Alamofire.upload(multipartFormData: { (multipartFormData) in 

      multipartFormData.append(fileData!, withName: "upfile", fileName: "upfile", mimeType: "text/plain") 


      for (key, value) in parameters { 
       multipartFormData.append((value as AnyObject).data(using: String.Encoding.utf8.rawValue)!, withName: key) 
      } 
     }, with: URL2 , encodingCompletion: { (result) in 

      switch result { 
       case .success(let upload, _, _): 
        print("s") 
        upload.responseJSON { 
         response in 
         if let JSON = response.result.value as? [String : Any]{ 
          let messageString = JSON["message"] as? String 

          }else { 

           let alertError = UIAlertController(title: "Alert", message: "Image upload error", preferredStyle: UIAlertControllerStyle.alert) 
           alertError.addAction(UIAlertAction(title: "Ok", style: UIAlertActionStyle.default, handler: nil)) 
           self.present(alertError, animated: true, completion: nil) 
          } 

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

        let alertError = UIAlertController(title: "Alert", message: "Image upload error", preferredStyle: UIAlertControllerStyle.alert) 
        alertError.addAction(UIAlertAction(title: "Ok", style: UIAlertActionStyle.default, handler: nil)) 
        self.present(alertError, animated: true, completion: nil) 
       } 
      } 
     ) 
    } 
関連する問題