2016-07-13 18 views
0

Alamofireを使用しているiOSデバイスからの署名付きURLを使用してS3バケットに画像を送ることができます。要求タイムアウト。iOSリクエストのタイムアウト投稿済みのURL /アラモファイアでS3に画像を投稿

私は次のコードで事前に署名したURLの生成ノードのバックエンドがあります。

var aws = require('aws-sdk'); 
var config = require('../config'); 
const uuid = require('uuid'); 

aws.config.update({accessKeyId: config.accessKeyId, secretAccessKey: config.secretAccessKey}); 

exports.getSignedImageUploadURL = function(filetype, callback) { 
    var s3 = new aws.S3(); 

    var filename = uuid.v4(); 
    var params = { 
    Bucket: 'xxx', 
    Key: filename, 
    Expires: 4000, 
    ContentType: "image/jpeg" 
    }; 
    s3.getSignedUrl('putObject', params, function(err, data) { 
    if (err) { 
     console.log(err); 
     callback(err, null); 
    } else { 
     callback(null, data); 
    } 
    }); 
} 

をそして私は、次のオプションで正常にポストマンで画像を置くことができる:

enter image description here

enter image description here

しかし、私はAlamofireの要求でこれらの条件を複製しようとしているようです。私は現在、次のコードを使用しています:

RESPONSE JSON FAILURE: Error Domain=NSURLErrorDomain Code=-1001 "The request timed out." 
UserInfo={NSUnderlyingError=0x7fee750cfc90 {Error Domain=kCFErrorDomainCFNetwork Code=-1001 "(null)" UserInfo={_kCFStreamErrorCodeKey=-2102, _kCFStreamErrorDomainKey=4}}, 
NSErrorFailingURLStringKey=https://xxx.s3.amazonaws.com/f01ab7e0-ecdc-4f19-93f0-4f1d89b2903c?AWSAccessKeyId=xxx&Content-Type=image%2Fjpeg&Expires=1468384920&Signature=xxx, 
NSErrorFailingURLKey=https://xxx.s3.amazonaws.com/f01ab7e0-ecdc-4f19-93f0-4f1d89b2903c?AWSAccessKeyId=xxx&Content-Type=image%2Fjpeg&Expires=1468384920&Signature=xxx, 
_kCFStreamErrorDomainKey=4, _kCFStreamErrorCodeKey=-2102, NSLocalizedDescription=The request timed out.} 

任意のアイデア:

Alamofire.upload(.PUT, postURL, headers: ["Content-Type": "image/jpeg"], multipartFormData: { multipartFormData in 
    if let image = image, imageData = UIImageJPEGRepresentation(image, 1.0) { 
     multipartFormData.appendBodyPart(data: imageData, name: "file", mimeType: "image/jpeg") 
    } 
}, encodingCompletion: { encodingResult in 
     switch encodingResult { 
     case .Success(let upload, _, _): 
      upload.responseJSON { response in 
       print("RESPONSE JSON", response) 
      } 
     case .Failure(let encodingError): 
      print("ENCODING ERROR", encodingError) 
     } 
    } 
) 

は、次のエラーを取得するには?

EDIT:

私も同じエラーにこのコードを試してみた:

if let image = image, imageData = UIImageJPEGRepresentation(image, 1.0) { 
    Alamofire.upload(.PUT, postURL, headers: ["Content-Type": "image/jpeg"], data: imageData) 
     .response { (req, res, json, error) in 
      print(req, res, json, error) 
      completionHandler(success: false) 
      return 
    } 
} 

答えて

0

まあこれは恥ずかしいです:要求は文字通り、オーストラリアのアップロード速度のおかげでタイムアウトました。

関連する問題