2016-12-22 3 views
0
if let img = ImageSelectorImg.image , imageSelected == true{ 

      let urlStr = "https://post.imageshack.us/upload_api.php" 
      let url = URL(string: urlStr)! 
      let imgData = UIImageJPEGRepresentation(img, 0.2)! 
      let keyData = "AEHKL...66b".data(using: String.Encoding.utf8)! 
      let keyJSON = "json".data(using: String.Encoding.utf8)! 

      Alamofire.upload(.POST,url,multipartFormData: { multipartFormData in 
        multipartFormData.appendBodyPart(data: imgData, name: "fileupload", fileName:"image", mimeType: "image/jpg") 
        multipartFormData.appendBodyPart(data: keyData, name: "key") 
        multipartFormData.appendBodyPart(data: keyJSON, name: "format") 
       }, 

       encodingCompletion: { encodingResult in 

        switch encodingResult { 

        case .success(let upload, _, _): 

         upload.responseJSON { response in 

          if let info = response.result.value as? Dictionary<String,AnyObject> { 

           if let links = info["links"] as? Dictionary<String,AnyObject> { 

            if let imgLink = links["image_link"] as? String { 
             self.postToFirebase(imgLink) 
            } 
           } 
          } 
         } 
        case.failure(let _): break 
        } 
      }) 
     } 

を見つけることができません:に:メソッド:ヘッダー:) "が表示され、解決策が何であるかはわかりません。助けてください。ありがとう。はAlamofire 4.0.0、エラー復帰とAlamofire.upload法を使用する場合、私は上記のコードを実行すると、私は溶液

答えて

1

urlにパラメータを指定してメソッド名を削除する必要があります。

Alamofire.upload(
multipartFormData: {multipartFormData in 
       multipartFormData.appendBodyPart(data: imgData, name: "fileupload", fileName:"image", mimeType: "image/jpg") 
       multipartFormData.appendBodyPart(data: keyData, name: "key") 
       multipartFormData.appendBodyPart(data: keyJSON, name: "format") 
      }, 
to: "https://httpbin.org/post", //URL, 
encodingCompletion: { encodingResult in 
    switch encodingResult { 
    case .success(let upload, _, _): 
     upload.responseJSON { response in 
      debugPrint(response) 
     } 
     upload.uploadProgress(closure: { //Get Progress 
       progress in 
        print(progress.fractionCompleted) 
      }) 
    case .failure(let encodingError): 
     print(encodingError) 
    } 
}) 
0

古いuploadの構文を使用しています。それは次のようになります。

if let img = ImageSelectorImg.image, imageSelected { 
    let urlStr = "https://post.imageshack.us/upload_api.php" 
    let url = URL(string: urlStr)! 
    let imgData = UIImageJPEGRepresentation(img, 0.2)! 
    let keyData = "AEHK...d66b".data(using: .utf8)! // key removed for sake of privacy 
    let keyJSON = "json".data(using: .utf8)! 

    Alamofire.upload(multipartFormData: { multipartFormData in 
     multipartFormData.append(imgData, withName: "fileupload", fileName:"image", mimeType: "image/jpg") 
     multipartFormData.append(keyData, withName: "key") 
     multipartFormData.append(keyJSON, withName: "format") 
    }, to: url, encodingCompletion: { encodingResult in 
     switch encodingResult { 
     case .success(let upload, _, _): 
      upload.responseJSON { response in 
       if let info = response.result.value as? [String: AnyObject], 
        let links = info["links"] as? [String: AnyObject], 
        let imgLink = links["image_link"] as? String { 
          self.postToFirebase(imgLink) 
       } 
      } 
     case.failure(_): break 
     } 
    }) 
} 

注意、.postからmethodパラメータのデフォルトは、あなたがそれを供給する必要はありませんので。

+0

参照[アップロードドキュメント](http://cocoadocs.org/docsets/Alamofire/4.2.0/Functions.html#/s:F9Alamofire6uploadFT17multipartFormDataFCS_17MultipartFormDataT_14usingThresholdVs6UInt642toPS_14URLConvertible_6methodOS_10HTTPMethod7headersGSqGVs10DictionarySSSS__18encodingCompletionGSqFOCS_14SessionManager31MultipartFormDataEncodingResultT___T_)または[README例をアップロード](https://github.com/ Alamofire/Alamofire#uploading-multipart-form-data)を参照してください。 – Rob

関連する問題