2015-10-16 4 views
2

Я пытаюсь загрузить изображение, используя Alamofire, но сервер не получает изображение. Это код, где я сделать загрузку:Alamofire multipartFormData upload не отправляет данные

Alamofire.upload(Router.UpdateUserAvatar, 
     multipartFormData: { (multipartFormData) -> Void in 
      let compressionQuality: CGFloat = 0.8 
      guard let imageData = UIImageJPEGRepresentation(image, compressionQuality) else { 
       print("Unable to get JPEG representation for image \(image)") 
       callCompletion() 
       return 
      } 
      multipartFormData.appendBodyPart(data: imageData, name: ParameterKey.Avatar, mimeType: "image/jpeg") 

     }, encodingCompletion: { (encodingResult) -> Void in 
      switch encodingResult { 
      case .Success(request: _, streamingFromDisk: _, streamFileURL: _): 
       finalResult = Result.Success(self) 
       callCompletion() 
      case .Failure(let errorType): 
       let error = errorType as NSError 
       finalResult = Result.failureForError(error, data: nil) 
       callCompletion() 
      } 
     } 
    ) 

ответ

2

После почти 4 часа, глядя на это, я обнаружил, что API требуется имя файла тоже, вот линия я изменилась, и все работало.

multipartFormData.appendBodyPart(data: imageData, name: ParameterKey.Avatar, fileName: "avatar.jpg", mimeType: "image/jpeg") 
+0

Благодарим вас за это! Это работает и для меня. Но немного путайте меня сейчас, почему мне нужно дать этому файлу имя, так как я никогда не буду использовать его на стороне сервера. Может быть, некоторые настройки сервера помогают 'appendBodyPart' работать без избыточного параметра fileName? .. – user3537411

+0

В моем случае это потому, что библиотека, которую мы используем на стороне сервера, требует имя, даже если мы его не используем. – Juan

+0

как насчет аудиофайла в Alamofire 4? - Я пытаюсь отправить аудиофайл в этой форме: multipartFormData.append (audioLocalPath, withName: "file", fileName: "file", mimeType: "application/octet-stream"), но возникает эта ошибка: multipartEncodingFailed (Alamofire.AFError .MultipartEncodingFailureReason.bodyPartFileNotReachableWithError (файл: /// var/mobile/Containers/....... /Documents/item.mp3, NSUnderlyingError = 0x16049100 {Ошибка домена = NSPOSIXErrorDomain Код = 2 "Нет такого файла или каталога"}})) - где проблема? -бад-запрос или плохой аудио-путь? – Saeid

Смежные вопросы