2016-12-16 9 views
0

AlamoFireを使用して、画像データ(avatarImage)をformDataパラメータタイプとしてサーバーにアップロードしようとしていますが、「データが読み込めません。私は投稿しようとするたびに "正しいフォーマット"のエラーが発生します。私が間違っていることを私は確信していません。パラメータを使用して画像をアップロードする(alamofire)

class func createTeamWithAvatar(avatarImage: Image) { 
    let extendedURI = "\(RequestManager.baseURL)" + "\(RequestManager.ClickUpURI.Team.rawValue)" 
    RequestManager.sharedAlamofireManager.upload(multipartFormData: { 
     multipartFormData in 

     //This generates an error: "The data could not be read because it isn’t in the correct format" 
     if let imageData = UIImageJPEGRepresentation(avatarImage, 1) { 
      multipartFormData.append(imageData, withName: "avatar", mimeType: "image/jpeg") 
     } 

     }, to: extendedURI, 
      encodingCompletion: { encodingResult in 
       switch encodingResult { 
       case .success(let upload, _, _): 
        upload.responseJSON { 
         response in 

         if let statusCode = response.response?.statusCode, 
          let response = response.result.value as? Dictionary<String, AnyObject>, 
          let _ = response["id"] as? String 
          , statusCode == 200 
         { 
          completionHandler(response, nil) 
         } else { 
          let responseError = response.result.value as? Dictionary<String, AnyObject> 

          let errorInfo = responseError ?? ["err" : "Unexpected media uploading error" as AnyObject] 
enter code here 
          let error = response.result.error ?? RequestManager.makeError(response.response?.statusCode ?? 500, userInfo: errorInfo) 
          completionHandler(nil, error as NSError?) 
         } 
        } 
       default: 
        completionHandler(nil, RequestManager.makeError(500, userInfo: ["err" : "Multipart encoding failed" as AnyObject])) 
       } 
     }) 
    } 

PS:私は、私は(私は画像をアップロードすることができていたら)だけでなく、いくつかの他のパラメータを送信する必要がB/CアップロードするmultipartFormDataを使用しています。

答えて

0

に文字列を変換する必要があり、文字列のparamの場合に

multipartFormData.append(paramData, withName: "paramName") 

を使用する必要があります私のサーバーは特定のデータを期待していました:

RequestManager.sharedAlamofireManager.session.configuration.httpAdditionalHeaders = ["Accept": "application/json", "Content-Type": "multipart/form-data"] 

この配列にキーと値のペアを追加することで、さらに多くの設定を追加できます。

0

あなたは、私が.httpAdditionalHeaders B/Cを追加する必要がありましたあなたは

data = string.data(using: String.Encoding.utf8)! 
multipartFormData.append(data, withName: "stringParamName") 

完全なデータコード

RequestManager.sharedAlamofireManager.upload(multipartFormData: { 
    multipartFormData in 

    //This generates an error: "The data could not be read because it isn’t in the correct format" 
    if let imageData = UIImageJPEGRepresentation(avatarImage, 1) { 
     multipartFormData.append(imageData, withName: "avatar", mimeType: "image/jpeg") 
    } 
    data = string.data(using: String.Encoding.utf8)! 
    multipartFormData.append(data, withName: "stringParamName") 

    //..... 
+0

私はこれを試しましたが、残念ながら解決策ではありませんでした –

関連する問題