2016-01-21 6 views
1

Я получаю запрос, когда я пытаюсь загрузить изображение с помощью следующего кода. Странно, что я даже не получил ответ об отказе от S3.Невозможно загрузить непосредственно на S3 с помощью Alamofire

[Request]: <NSMutableURLRequest: 0x12d958f20> { URL: https://[redacted].s3.amazonaws.com/96d5b0e9-4606-4a8d-bd22-8d30f840361a/611ad69fb0452bd7c806886cf6404b34-original.png?AWSAccessKeyId=[redacted]&Content-Type=image%2Fpng&Expires=1453484324&Signature=[redacted]&x-amz-acl=public-read } 
[Response]: nil 
[Data]: 0 bytes 
[Result]: FAILURE: Error Domain=NSURLErrorDomain Code=-1001 "The request timed out." UserInfo={NSUnderlyingError=0x12d946590 {Error Domain=kCFErrorDomainCFNetwork Code=-1001 "(null)" UserInfo={_kCFStreamErrorCodeKey=-2102, _kCFStreamErrorDomainKey=4}}, NSErrorFailingURLStringKey=https://[redacted].s3.amazonaws.com/96d5b0e9-4606-4a8d-bd22-8d30f840361a/611ad69fb0452bd7c806886cf6404b34-original.png?AWSAccessKeyId=[redacted]&Content-Type=image%2Fpng&Expires=1453484324&Signature=[redacted]&x-amz-acl=public-read, NSErrorFailingURLKey=https://[redacted].s3.amazonaws.com/96d5b0e9-4606-4a8d-bd22-8d30f840361a/611ad69fb0452bd7c806886cf6404b34-original.png?AWSAccessKeyId=[redacted]&Content-Type=image%2Fpng&Expires=1453484324&Signature=[redacted]&x-amz-acl=public-read, _kCFStreamErrorDomainKey=4, _kCFStreamErrorCodeKey=-2102, NSLocalizedDescription=The request timed out.} 

class func avatar (uploadURL: String, avatar: UIImage, callback: (String?) -> ()) { 

    print("Upload to \(uploadURL)") 
    Alamofire.upload(.POST, uploadURL, multipartFormData: { multipartFormData in 
     if let imageData = UIImagePNGRepresentation(avatar) { 
      multipartFormData.appendBodyPart(data: imageData, name: "file", fileName: "file.png", mimeType: "image/png") 
     } 
    }, encodingCompletion: { encodingResult in 
     print("Encoded") 
     switch encodingResult { 
     case .Success(let upload, _, _): 
      print("About to Upload") 
      upload.responseJSON { response in 

       print("Status code: \(response.response?.statusCode)") 
       print(response.debugDescription) 

       switch response.result { 
       case .Success: 
        callback("url") 
       case .Failure: 
        callback(nil) 
       } 

      } 
     case .Failure(let encodingError): 
      print("===== ERROR ENCODING PNG =====") 
      print(encodingError) 
     } 
    }) 

} 

ответ

0

я столкнулся с подобной проблемой, когда я не получил вид на многосекционном точно формате, S3 ожидавшими. Вместо ошибки он не возвращал ответ.

Вот как я в конечном итоге отправки файла часть многочастного формы

multipartFormData.appendBodyPart(stream: NSInputStream(data: imageData), 
           length: UInt64(imageData.length), 
           headers: ["Content-Disposition": "form-data; name=\"file\"", 
              "Content-Type": "application/octet-stream"]) 
Смежные вопросы