简体   繁体   English

如何使用Javascript(Angular框架)将zip文件上传到Amazon S3?

[英]How do I upload a zip file to Amazon S3 using Javascript (Angular framework)?

Using the following code: 使用以下代码:

params = {
    Bucket: 'bucket.com',
    Key: zipPath
    },
s3 = new AWS.S3();
params.Body = zipFile;
s3.putObject(params, function(err, data) {
    if (err) {
        logger.info('Upload error: ' + err);
    } else {
        logger.info('Uploaded: ' + String(data));
    }
});

When I change the body contents to a string (ie 'Hello'), it will upload perfectly fine. 当我将正文内容更改为字符串(即“ Hello”)时,它将完美上传。 However, when I try to attach a zip file, it is not working. 但是,当我尝试附加一个zip文件时,它不起作用。 Any ideas? 有任何想法吗? I am really new to uploading files and can't seem to find any answers online. 我确实是上传文件的新手,似乎无法在线找到任何答案。

Error that I get: Upload error: Error: Cannot determine length of [object Object] 我收到的错误:上传错误:错误:无法确定[object Object]的长度

EDIT: the zip contains images. 编辑:压缩文件包含图像。

Try this: 尝试这个:

Include this in your html header: 在您的html标头中添加以下内容:

HTML file: HTML档案:

<input type="file" id="file-chooser" /> 
<button id="upload-button">Upload to S3</button>
<div id="results"></div>

Javascript file: Javascript文件:

    <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.upload(params, function (err, data) {
        results.innerHTML = err ? 'ERROR!' : 'UPLOADED.';
      });
    } else {
      results.innerHTML = 'Nothing to upload.';
    }
  }, false);
</script>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM