This article显示如何使用表单将文件上传到Amazon S3或minio。我想使用预先签名的POST URL策略方法,因为它看起来是最安全的。如何将文件上传到使用javascript的浏览器到Minio或S3的预签名POST URL?
但是,我希望使用浏览器以编程方式上传文件到minio或S3。换句话说,我想使用JavaScript,而不是表单。
我是一个节点用户,熟悉superagent,使用.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()
不支持,当我工作围绕这一点,我因为我的JavaScript域是一个独立的跑进CORS问题域名从我的迷你或S3域。
为了回答这个问题,我希望看到一个使用XMLHttpRequest,Axios,superagent或Fetch的完整示例,它可以跨域使用。
我注意到有一些类似的问题,这个和一些答案,但他们都显得非常过时,技术已经开始。所以我不认为这是一个重复的问题。
铲斗支撑[定制CORS响应(http://docs.aws.amazon.com/AmazonS3/latest/dev/cors。 html),所以你应该能够解决这个问题的一部分。 –
在minio上默认使用CORS,这是我测试的目的。但是,感谢亚马逊CORS链接,我可能会在某个时候需要。 –
对不起,我的大脑中有S3,完全掩盖了多次提及minio的情况。 –