當我涉及到文件管理的時候,我遇到了一些麻煩,包括頭腦中的一些問題,以及NodeJS內部不存在的問題,並想知道是否有人可以指引我朝着正確的方向前進。如何通過NodeJS將文件上傳到S3並跟蹤瀏覽器的進度?
我有一個隨用戶需要同時發生的上傳隊列列表(允許他們隨意暫停或刪除下載),我需要該過程來擊中節點服務器以調整圖像大小或將視頻作爲需要。從這裏我需要Node使用AWS-SDK(我爲一般的沙盒測試設置了一個fakeS3服務器)通過S3上傳視頻或圖像,並且在上傳時我需要在瀏覽器中跟蹤上傳的進度。
我正在使用React和服務器端渲染與節點,所以我想必須有一個非常簡單的方式來處理這種情況,但我找不到以前做過這些的人。這裏有幾個概念,我搞亂:
Server.js(核心輸入)
server.use(express.static(path.join(__dirname, 'public')));
server.use(multer({
dest: './public/temp',
limits: {
fieldNameSize: 50,
files: 1,
fields: 5,
fileSize: 1024 * 1024
},
rename: (fieldname, filename) => {
return filename;
},
onFileUploadStart: (file) => {
console.log('Starting file upload process.');
},
inMemory: true
}));
server.use(cookieParser());
server.use(bodyParser.urlencoded({ extended: true }));
server.use(bodyParser.json());
中間路線(/上傳或東西)
export function uploadContent(req, res) {
const config = {
s3ForcePathStyle: true,
accessKeyId: 'ACCESS_KEY_ID',
secretAccessKey: 'SECRET_ACCESS_KEY',
endpoint: new AWS.Endpoint('http://localhost:4567'), // TODO make live
};
const client = new AWS.S3(config);
const params = {
Key: 'Key',
Bucket: 'Bucket',
Body: fs.createReadStream(req.body.files[0])
};
client.upload(params, function uploadCallback (err, data) {
console.log(err, data);
});
}
這是不行的,因爲身體分析器與路線衝突,multer也有時間(我願意接受其他建議),關於如何實現這一點的任何信息都非常棒。我不是在尋找完整的代碼,而是另一個想法,讓我走上正確的道路。我感謝任何幫助!