当我们需要在Node.js中实现文件上传功能的时候,通常使用Express.js框架来实现是一种非常方便可行的方法。本攻略将详细讲解如何使用Express.js框架来实现文件上传。
安装依赖
首先需要安装必要的依赖包,您需要在命令行中运行以下命令:
npm install express multer --save
其中,multer是一个处理文件上传的 Node.js 中间件,用来处理 enctype="multipart/form-data"(设置表单的MIME编码)的表单数据。它是在 bodyParser 的基础上创建的。
服务端实现
在服务端Javascript文件中,需要使用Express.js来处理文件上传请求,以下是完整的服务端代码:
const express = require("express");
const multer = require("multer");
const app = express();
const storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, 'uploads/')
},
filename: function (req, file, cb) {
cb(null, file.fieldname + '-' + Date.now())
}
})
const upload = multer({ storage: storage })
app.post("/upload", upload.single("file"), function (req, res, next) {
const file = req.file;
if (!file) {
const error = new Error("Please upload a file");
error.httpStatusCode = 400;
return next(error);
}
res.send(file);
});
app.listen(3000, function () {
console.log("App running on http://localhost:3000");
});
该代码中:
- 首先引入了 Express 和 Multer 模块
- 然后使用 Multer 的 diskStorage 配置来设置文件的存储位置和文件名字
- 接着使用
upload.single("file")
处理 Express 的文件上传请求,其中 "file" 参数即为文件上传表单的 name 值 - 最后返回上传的文件信息
其中,上传的文件将会保存在指定文件夹 uploads/
中,文件名会被设为 "file-当前时间戳" 的形式。
客户端实现
在客户端HTML文件中,需要使用form表单来实现文件上传,以下是完整的客户端代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>文件上传示例</title>
</head>
<body>
<form action="/upload" method="POST" enctype="multipart/form-data">
<input type="file" name="file" /><br /><br />
<input type="submit" value="上传" />
</form>
</body>
</html>
该代码中:
- 设置表单的 enctype="multipart/form-data"
- 设置表单的 method="POST"
- 为文件上传表单添加一个 input 元素,其中 name 值为 "file"
- 添加一个 submit 按钮,用于提交表单
以上两段代码的实现,即可完成一个基于express实现的文件上传功能。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:nodejs基于express实现文件上传的方法 - Python技术站