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');
}
}
あなたの角度アプリアップロード制限を確認することができますか? – mootmoot
この設定はどこに設定されていますか? – adolfosrs
申し訳ありませんが、私はこの問題を見落としています。 put_object()を呼び出すときには、API自体からの制限はありません。これは企業のファイアウォール/プロキシ/ロードバランスのようなファイルアップロードを制限するように見えます。これはネットワークの問題のようです。 – mootmoot