我正在开发一个 JavaScript 客户端来将文件直接上传到 Amazon S3。
<input type="file" id="file-chooser" />
<button id="upload-button">Upload to S3</button>
<div id="results"></div>
<script type="text/javascript">
var bucket = new AWS.S3({params: {Bucket: 'myBucket'}});
var fileChooser = document.getElementById('file-chooser');
var button = document.getElementById('upload-button');
var results = document.getElementById('results');
button.addEventListener('click', function() {
var file = fileChooser.files[0];
if (file) {
results.innerHTML = '';
var params = {Key: file.name, ContentType: file.type, Body: file};
bucket.putObject(params, function (err, data) {
results.innerHTML = err ? 'ERROR!' : 'UPLOADED.';
});
} else {
results.innerHTML = 'Nothing to upload.';
}
}, false);
</script>
Amazon 文档中的示例工作正常,但它不提供有关上传进度的任何反馈。
有任何想法吗?
谢谢
原文由 FkJ 发布,翻译遵循 CC BY-SA 4.0 许可协议
为什么不使用
s3.PutObject
函数而不是使用 ManagedUpload 函数。它是专门开发的,允许您挂接到 httpUploadProgress 事件,该事件应该允许相当容易地实现进度条的更新。