Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon s3 如何使用javascript将文件从浏览器上传到Minio或S3的预签名POST URL_Amazon S3_Xmlhttprequest_Axios_Superagent_Minio - Fatal编程技术网

Amazon s3 如何使用javascript将文件从浏览器上传到Minio或S3的预签名POST URL

Amazon s3 如何使用javascript将文件从浏览器上传到Minio或S3的预签名POST URL,amazon-s3,xmlhttprequest,axios,superagent,minio,Amazon S3,Xmlhttprequest,Axios,Superagent,Minio,演示如何使用表单将文件上载到AmazonS3或minio。我想使用预签名后URL策略方法,因为它看起来是最安全的 但是,我希望使用浏览器以编程方式将文件上载到minio或S3。换句话说,我想使用javascript,而不是表单 我是一名节点用户,熟悉,使用.field()和.attach()操作设置表单字段和上载文件非常简单 这在节点中起作用: let cdnAgent = superagent; let req = cdnAgent.post(r.data.pictureSet.upl

演示如何使用表单将文件上载到AmazonS3或minio。我想使用预签名后URL策略方法,因为它看起来是最安全的

但是,我希望使用浏览器以编程方式将文件上载到minio或S3。换句话说,我想使用javascript,而不是表单

我是一名节点用户,熟悉,使用
.field()
.attach()
操作设置表单字段和上载文件非常简单

这在节点中起作用:

  let cdnAgent = superagent;
  let req = cdnAgent.post(r.data.pictureSet.uploadLink);
  _.each(uploadForm, function(value, key) {
    req.field(key, value);
  });
  // upload file via the created signed policy
  return req
  .set('Content-Type', 'application/octet-stream')
  .attach('file', 'test/data/test.jpg');
}).then(r => {
但是,这在浏览器中不起作用,
.attach()
不受支持,当我解决这个问题时,我遇到了CORS问题,因为我的javascript域与我的minio或S3域是一个单独的域

为了回答这个问题,我想看一个使用XMLHttpRequest、Axios、superagent或Fetch的完整示例,它可以跨域工作

我注意到有一些与此类似的问题和一些答案,但它们都显得非常过时,技术也在进步。所以我不认为这是一个重复的问题。

你可以简单地克隆这个回购协议,然后运行它

node presign-post-server.js
请访问浏览器。点击上传文件,只需上传所选文件,即可通过预先签署的post策略样式上传。[1]

目前,该示例仅指向和
上传
存储桶。[2]

[1]


[2]

Bucket支持,因此您应该能够解决这部分问题。minio上默认启用CORS,这就是我测试的对象。但是感谢Amazon CORS链接,我可能会在某个时候需要它。很抱歉,我的大脑中有S3,并且完全掩盖了多次提到minio。顺便说一句,Superagent确实有效,但是如果你有任何错误,它只会提供一个非常混乱的CORS消息。线程在这里与工作代码在底部。工作榜样,热爱它!。现在只需将其打包成docker映像:-)。但非常感谢,这是一个规范的XMLHttpRequest示例。OP.评论中的SuperAgent答案。现在有人只需要发布Axios答案,下一个noob会更好。。。