在 Express 路由器中使用 multer 进行文件上传
Posted
技术标签:
【中文标题】在 Express 路由器中使用 multer 进行文件上传【英文标题】:Use multer for File-Uploads inside a Express Router 【发布时间】:2016-03-19 03:48:08 【问题描述】:我得到了一个使用 node.js 和 Express 构建的工作 REST-API。
现在我需要一个文件上传端点,它接受上传的文件并处理它们。
我正在使用 Express 路由器和一些身份验证中间件。
server.js(摘录)
var router = express.Router()
app.use("/api", router)
[...]
router.use(function(req, res, next)
//Authentification middleware
[...]
next()
)
router.route("/upload")
.post(function(req, res)
//upload logic
)
如何使用 multer 将上传的文件作为 req.file (左右)提供,但仅限于 /api/upload对于经过身份验证的用户?
【问题讨论】:
【参考方案1】:好的,我知道了。
我可以使用
var multer = require("multer")
var upload = multer( dest: "some/path" )
[...]
router.route("/upload")
/* replace foo-bar with your form field-name */
.post(upload.single("foo-bar"), function(req, res)
[...]
)
【讨论】:
【参考方案2】:对我来说,它也有效。
var multer = require("multer")
var upload = multer( dest: "path" )
router.post("/upload", upload.single("foo-bar"), function(req, res)
...
【讨论】:
我花了很多时间试图完成这项工作。var uploadMulter = multer( dest: directory ); router.post('/upload', uploadMulter.single("html_input_element_name"), function(req,res, next) ...
。 Multer repo In an average web app, only dest might be required,
中有一行。不要相信那条线...您还需要.single(fieldname)
电话...非常感谢...【参考方案3】:
在我的情况下,我尝试了所有方法,但它不起作用,但我找到了解决方案
app.js
const multer = require('multer');
const storage =
dest: 'UPLOAD/PATH/'
const upload = multer(storage);
app.post('/myupload', upload.single('FILE_NAME'), (req,res)=>
res.send('Upload');
);
我用 express.Router() 尝试了很多次,但它不起作用,这就是我在 app.js 中编写代码并重定向到另一个文件的原因。
【讨论】:
以上是关于在 Express 路由器中使用 multer 进行文件上传的主要内容,如果未能解决你的问题,请参考以下文章
使用 Multer 将带有 fetch 的图像上传到 Express
在 React to Express multer 中使用 Antd 上传裁剪的图像