1
我使用multiparty和S3FS將文件上傳到amazon s3,當將文件流寫入s3時,它會創建臨時文件路徑以及存儲桶路徑,例如:使用NodeJS和S3FS /多方上傳文件到Amazon S3
var S3FS = require('s3fs');
var s3fsImpl = new S3FS('my-bucket/files',{
accessKeyId: config.amazonS3.accessKeyId,
secretAccessKey: config.amazonS3.secretAccessKey
});
module.exports = function (app) {
app.post('/upload', function (req, resp) {
// get the file location
var file = req.files.file;
var stream = fs.createReadStream(file.path);
return s3fsImpl.writeFile(fileName,stream).then(function(){
fs.unlink(file.path,function(err){
if(err)
console.error(err);
});
resp.send('done');
}).catch(function (err) {
return resp.status(500).send({
message: errorHandler.getErrorMessage(err)
});
});
});
};
的文件應該寫在S3路徑:
我的桶/文件
,而現在它寫在Amazon S3的桶中的臨時文件路徑:
my-bucket/files/home/ubuntu/www/html/sampleProject/public/files
任何想法爲什麼臨時文件路徑'home/ubuntu/www/html/sampleProject/public/files'
在寫入文件時在s3存儲桶中創建?
建議使用'path'模塊以編程方式解析路徑而不是使用replace。這將確保它與平臺無關。 https://nodejs.org/api/path.html#path_path_resolve_paths – Sterex
謝謝@Sterex,我用路徑模塊代替,當時我是nodejs的初學者:) –