如何解决fs节点的来源
我目前正在用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。谢谢。
或者,将这种代码更改为分段上传的方法也一样。此代码在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,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,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>
解决方法
fs
模块是内置的Node.js。它不是用JavaScript编写的,也不在Node.js之外可用,并且它无法实现浏览器中提供给JS的API所无法实现的功能(例如读取和写入本地文件!)。
您无法从浏览器访问Node.js API。 Node.js是与Web浏览器不同的执行环境,因此具有不同的功能。出于安全原因,Web浏览器对您的操作有所限制。
我在您的评论中看到
我需要做的就是能够将MultiPart(或大型)上传到s3存储桶。
在这种情况下,您可以在服务器上生成一个预签名的s3 url,然后在允许它们上传时将其发送给客户端。预签名的URL在一定时间内有效。您只应在服务器端生成它们,因为您将需要提供IAM凭据才能创建URL。
查看本教程以获取更多信息:https://softwareontheroad.com/aws-s3-secure-direct-upload/
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。