将本地文件上传到Amazon AWS S3时如何获取?

时间:2019-03-07 02:26:36

标签: amazon-web-services amazon-s3

这是我在网上找到的解决方案:[https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/s3-example-photo-album.html]

function addPhoto(albumName) {
  var files = document.getElementById('photoupload').files;
  if (!files.length) {
    return console.log('Please choose a file to upload first.');
  }
  var file = files[0];
  var fileName = file.name;
  var albumPhotosKey = encodeURIComponent(albumName) + '//';

  var photoKey = albumPhotosKey + fileName;
  s3.upload({
    Key: photoKey,
    Body: file,
    ACL: 'public-read'
  }, function(err, data) {
    if (err) {
      return console.log('There was an error uploading your photo: ', err.message);
    }
    console.log('Successfully uploaded photo.');
    viewAlbum(albumName);
  });
}

但是,在我当前的环境中,没有称为“文档”的概念。我真的不知道“文档”是如何工作的。我可以在当前环境中包含“文档”吗?或者我可以使用其他方法来获取本地文件[图像]?非常感谢!

s3.upload:https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#upload-property

2 个答案:

答案 0 :(得分:1)

您应该指定您的环境。 document对象仅在HTML(在浏览器中运行的网页)中有意义。如果您不是在浏览器中运行而是独立运行,则可能使用Node.js。

正如documentation所说,Body参数可以是Buffer,Typed Array,Blob,String或ReadableStream。

因此,Node.js中本地文件的简单上载可能类似于:

var fs = require('fs');
var stream = fs.createReadStream('/my/file');

s3.upload({
   Bucket: 'mybucket',
   Key: 'myfile'
   Body: stream
}, function(err, data) {
   if (err) return console.log('Error by uploading.', err.message);
   console.log('Successfully uploaded.');
});

答案 1 :(得分:0)

文档对象模型(DOM)是一种跨平台且独立于语言的应用程序编程接口,该文档编程接口将HTML,XHTML或XML文档视为树结构,其中每个节点都是代表文档一部分的对象。 / p>

DOM表示带有逻辑树的文档。树的每个分支都以一个节点结尾,并且每个节点都包含对象。 DOM方法允许通过编程方式访问树;使用它们可以更改文档的结构,样式或内容。节点可以附加有事件处理程序。触发事件后,事件处理程序便会执行

来源: https://en.wikipedia.org/wiki/Document_Object_Model

这只是将页面加载到浏览器后用于访问DOM的根上下文。

查看文档模型加载事件的示例:

document.addEventListener("DOMContentLoaded", function(event) {
    // - Code to execute when all DOM content is loaded. 
    alert("LOADED!");
});