![](/img/trans.png)
[英]Uploading multiple files to Google Cloud using multer and Node.js
[英]Service for uploading multiple file using multer in node.js
我創建了一個名為FileUpload的類,並使用multer制作了一個上傳多個文件的函數。我想在控制器中使用此方法,但我不能這樣做。 我無法從請求中獲取其他字段。 這是FileUpload類:
var multer = require('multer');
class FileUpload{
constructor(){
this.storage = null;
this.filepath = null;
this.upload = null;
}
uploadMultipleFile(req,res,path){
this.filepath = path;
this.storage = multer.diskStorage({
destination : (req,file,callback) =>{
callback(null,path)
},
filename : (req,file,callback)=>{
this.filepath = this.filepath + file.fieldname + '-' + new Date().getTime();
callback(null,this.filepath);
}
});
this.upload = multer({storage:this.storage}).array('files',req.files.length);
this.upload(req,res,(err) => {
if(err){
return res.status(403).send({
success:false,
message : SystemMessage.UploadErrorMessage.replace('{0}',"Files"),
data : {
filepath : filepath
}
});
}
return res.status(200).send({
success:true,
message : SystemMessage.UploadSuccessMessage.replace('{0}',"Files"),
data : {
filepath : filepath
}
});
});
}
}
module.exports = FileUpload;
這是我在其中定義路由的控制器文件:
const express = require('express');
const router = express.Router();
const FileUpload = require('../services/fileUpload');
router.post("/add",(req,res)=>{
let localdate=CommonFunction.datetime();
let fileUpload = new FileUpload();
let obj = {
user_id:req.body.user_id,
subject:req.body.subject,
message:req.body.message,
created_date:localdate,
modified_date:localdate
};
});
當我從郵遞員致電此路線時,我在body.form中使用表格數據格式,得到以下響應:
{
user_id: undefined,
subject: undefined,
message: undefined,
created_date: '2019-1-22 13:55:42',
modified_date: '2019-1-22 13:55:42'
}
指導我如何在route / add中使用uploadMultipleFile函數?
定義文件時,可以將multer用作中間件。
在路由器文件中
var multer = require('multer');
var path = require('path');
var storage = multer.diskStorage({
destination: 'public/upload/', // uploading directory
filename: function ( req, file, cb ) { //cahnge file name
let ext = (path.extname(file.originalname)).toLowerCase(); //get file extension
let time = Date.now(); //get timestamp
cb( null, 'vehicle-'+time+ext); //return renamed file
}
});
var upload = multer( { storage: storage } );
router.post('/add',upload.any(), function (req,res){ // any() will accept files that comes over the wire. An array of files will be stored in req.files
uploadMultipleFile(req, res); //or redirect to your controller as you normal do
});
現在轉到您的控制器(uploadMultipleFile(req,res))文件。
uploadMultipleFile(req, res){
console.log(req.files); //see your files in console
// in req.files files are available do what stuff you want
// you can use loop function to save files details in your database
// you can get single file like this 'your uploaded directory/'+req.file[0].filename;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.