【发布时间】:2020-12-15 13:08:03
【问题描述】:
我目前正在对 HTML 元素进行一些编程。在代码中,我将文件上传到 s3 存储桶。为此,我正在使用以下来源的 aws-sdk 节点:
<script src="https://sdk.amazonaws.com/js/aws-sdk-2.1.24.min.js"></script>
但是我也需要使用 fs 节点,但是我不知道使用该节点的来源。
这是我要使用的代码:https://gist.github.com/sevastos/5804803
是否有人知道此节点的源 URL 或可用于此代码的类似源 URL。谢谢。
另外一种方法可以将此代码更改为分段上传也一样好。此代码在 HTML 元素中工作,用于发送小于 6MB 的文件。 (链接和ID是文件名标识,不相关)
<script src="https://sdk.amazonaws.com/js/aws-sdk-2.1.24.min.js">
</script>
<script type="text/javascript" src="https://code.jquery.com/jquery-3.2.1.min.js">
</script>
<script type="text/javascript">
window.onmessage = (event) => {
if (event.data) {
if (event.data[5] === "Start"){
Start(event.data[0], event.data[1], event.data[2], event.data[3], event.data[4])
} else{
document.getElementById("GoogleSheetsDocs").innerHTML = event.data;
}
}
};
function sendLoadMessage () {
window.parent.postMessage("LoadOk1", "*");
}
function postMsg(msg) {
window.parent.postMessage(msg, "*");
}
function Start(bucketName1, bucketRegion1, IdentityPoolId1, link, ID) {
var bucketName = bucketName1;
var bucketRegion = bucketRegion1;
var IdentityPoolId = IdentityPoolId1;
AWS.config.update({
region: bucketRegion,
credentials: new AWS.CognitoIdentityCredentials({
IdentityPoolId: IdentityPoolId
})
});
var s3 = new AWS.S3({
apiVersion: '2006-03-01',
params: {Bucket: bucketName}
});
s3upload(s3, bucketRegion, bucketName1, link, ID)
}
</script>
<div>
<input type="file" id="fileUpload">
</div>
<div>
<button onclick="Start('EXAMPLEBUCKET', 'eu-west-2', 'eu-west-2:EXAMPLECODE', 'link', 'ID')">Submit</button>
</div>
<progress max="100" value="0" id="Process1" ></progress>
<script type="text/javascript">
function s3upload(s3, bucketRegion, bucketName1, link, ID) {
var files = document.getElementById('fileUpload').files;
if (files) {
var file = files[0];
var n = file.name.lastIndexOf(".");
var res = file.name.substring(n, file.name.length);
var fileName = link + res;
var filePath = 'Projects/' + ID + '/Documents/' + fileName;
var fileUrl = 'https:s3//' + bucketRegion + '.amazonaws.com/' + bucketName1 + '/' + filePath;
s3.upload({
Key: filePath,
Body: file,
ACL: 'public-read'
}, function(err, data) {
if(err) {
reject('error');
}
alert('Successfully Uploaded!');
}).on('httpUploadProgress', function (progress) {
var uploaded = parseInt((progress.loaded * 100) / progress.total);
$("progress").attr('value', uploaded);
});
}
};
</script>
<body onload="sendLoadMessage ();" style="background-color:white;">
<div id="GoogleSheetsDocs"></div>
</body>
【问题讨论】:
标签: javascript node.js amazon-web-services amazon-s3 fs