我正在创建一个门户网站,用户可以在其中选择PC上的单个文件并将其上传到S3。
以下是我的server.js代码:
app.post('/ submit_doc',function(req,res){
var FileName = req.body.fileName,
Filedescription = req.body.filediscrip,
InputFileName = req.body.inputfile;
AWS.config.region = 'eu-west-1';
var fileStream = fs.createReadStream(FileName);
fileStream.on('error', function (err) {
if (err){
console.log("Error reading file: ", err);
res.send(500);
}
else{
fileStream.on('open', function () {
var s3 = new AWS.S3();
s3.putObject({
Bucket: 'exampleassetcare.com',
Key: 'reports/'+FileName,
Body: fileStream
}, function (err) {
if (err) {
console.log("Error uploading data: ", err);
res.send(500);
}
});
});
我收到错误:没有这样的文件或目录。
有人可以帮忙吗?
答案 0 :(得分:1)
如果我正确理解您,您发布的此代码正在服务器上运行。但输入是由客户端提供的,是吗?如果是这样,您的服务器将尝试在本地查找文件,基于客户端提供给您的文件路径...因此该文件不会存在...
如果我是恶意用户而且我告诉您的服务器上传文件路径<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
,您的服务器将会公开散列密码(假设它是Linux系统,并假设有适当的权限,等等......但你明白了。)
答案 1 :(得分:0)
将其更改为
var FileName = req.body.fileName,
Filedescription = req.body.filediscrip,
InputFileName = req.body.inputfile;
AWS.config.region = 'eu-west-1';
console.log(FileName)
var fileStream = fs.createReadStream(FileName);
并检查您的文件是否存在,看起来文件路径有问题。