2016-03-30 8 views
3

私の角型アプリケーション内でAWS S3 Multipartを使用してファイルをアップロードしようとしています。アップロードが開始されますが、12 MBのデータが読み込まれた後に再起動します。AWS S3ロードされたデータの12MBに達するとマルチパートのアップロードが再開されます

ログ

Object {loaded: 12582912, total: 91015730, part: 3, key: "IMG_2973.MOV"} 
postVideo.js:46 14% done 
postVideo.js:47 Object {loaded: 12582912, total: 91015730, part: 4, key: "IMG_2973.MOV"} 
postVideo.js:46 8% done 
postVideo.js:47 Object {loaded: 7684096, total: 91015730, part: 2, key: "IMG_2973.MOV"} 
postVideo.js:46 7% done 
postVideo.js:47 Object {loaded: 6078464, total: 91015730, part: 4, key: "IMG_2973.MOV"} 
postVideo.js:46 4% done 
postVideo.js:47 Object {loaded: 3850240, total: 91015730, part: 3, key: "IMG_2973.MOV"} 
postVideo.js:46 1% done 
Object {loaded: 589824, total: 91015730, part: 1, key: "IMG_2973.MOV"} 
postVideo.js:46 1% done 
postVideo.js:47 Object {loaded: 622592, total: 91015730, part: 4, key: "IMG_2973.MOV"} 
postVideo.js:46 1% done 
postVideo.js:47 Object {loaded: 655360, total: 91015730, part: 3, key: "IMG_2973.MOV"} 
postVideo.js:46 1% done 

アプリケーションが数回再試行しますが、その後のタイムアウトを取得します。

私はここでかなり盲目であり、どんな考えも役に立ちます。


CORS

<?xml version="1.0" encoding="UTF-8"?> 
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> 
    <CORSRule> 
     <AllowedOrigin>*</AllowedOrigin> 
     <AllowedMethod>PUT</AllowedMethod> 
     <AllowedMethod>GET</AllowedMethod> 
     <AllowedMethod>POST</AllowedMethod> 
     <ExposeHeader>x-amz-server-side-encryption</ExposeHeader> 
     <ExposeHeader>x-amz-request-id</ExposeHeader> 
     <ExposeHeader>x-amz-id-2</ExposeHeader> 
     <ExposeHeader>ETag</ExposeHeader> 
     <AllowedHeader>*</AllowedHeader> 
    </CORSRule> 
</CORSConfiguration> 

コードtopic opened in aws-sdk-js githubに与えられた助けを借りて

$scope.upload = function() { 
    // Configure The S3 Object 
    $scope.creds = $publisherServices.getAwsCreds(); 
    AWS.config.update({ accessKeyId: $scope.creds.access_key, secretAccessKey: $scope.creds.secret_key }); 
    //AWS.config.region = 'sa-east-1'; 
    var bucket = new AWS.S3({apiVersion: '2006-03-01', params: {Bucket: $scope.creds.bucket}}); 

    if($scope.file) { 
     var params = { Key: $scope.file.name, ContentType: $scope.file.type, Body: $scope.file}; 
     bucket.upload(params). 
     on('httpUploadProgress', function(progress) { 
      console.log(Math.round(progress.loaded/progress.total * 100) + '% done'); 
      console.log(progress); 
     }).send(function(err, data) { console.log(err, data) }); 
    } else { 
     // No File Selected 
     alert('No File Selected'); 
    } 
    } 
+0

あなたの角度アプリアップロード制限を確認することができますか? – mootmoot

+0

この設定はどこに設定されていますか? – adolfosrs

+0

申し訳ありませんが、私はこの問題を見落としています。 put_object()を呼び出すときには、API自体からの制限はありません。これは企業のファイアウォール/プロキシ/ロードバランスのようなファイルアップロードを制限するように見えます。これはネットワークの問題のようです。 – mootmoot

答えて

2

は、私は問題を解決することができました。実際には、部品に2分のタイムアウト・プリセットが設定されています。

はそれだけでhttpOptionsのタイムアウト設定を無効にするには:

var bucket = new AWS.S3({ 
    apiVersion: '2006-03-01', 
    httpOptions: {timeout: 0}, 
    params: {Bucket: $scope.creds.bucket} 
}); 
関連する問題