下面我开始讲解如何使用node.js中的express框架进行文件上传。
背景知识
在使用node.js中的express框架进行文件上传之前,需要先了解一些相关的背景知识:
- HTTP请求类型
HTTP请求类型包括GET
、POST
、PUT
、DELETE
等。在文件上传过程中,需要使用POST
请求类型。
- multipart/form-data数据格式
当使用POST
请求类型时,需要将上传文件封装在multipart/form-data
格式中。multipart/form-data
格式可以同时传输二进制数据和文本数据。
- 表单/Form表单
在提交文件的过程中,需要使用表单进行文件的选择和上传。
文件上传详解
下面分为四个步骤详细讲解如何用node.js使用express框架进行文件上传:
步骤一:安装依赖
在开始文件上传之前,需要安装依赖。在本教程中,我们需要使用三个npm包:express
、multer
和path
。
npm install express multer path
安装完成后,在代码中引入这些包:
const express = require('express')
const multer = require('multer')
const path = require('path')
const app = express()
步骤二:设置存储路径和文件名
在文件上传过程中,需要设置上传文件的存储路径和文件名。在示例中,我们将文件存储在uploads
文件夹下,文件名为file-时间戳.文件后缀名
。
const storage = multer.diskStorage({
destination(req, file, callback) {
callback(null, './uploads/')
},
filename(req, file, callback) {
const uniqueSuffix = Date.now() + '-' + Math.round(Math.random() * 1E9)
callback(null, 'file-' + uniqueSuffix + path.extname(file.originalname))
}
})
步骤三:配置上传中间件
在代码中配置上传中间件,同时设置上传的文件大小限制和文件数量限制。在示例中,我们限制上传文件的大小为2MB
,文件数量为10个
。上传中间件可以使用single
方法上传单个文件,或者使用array
方法上传多个文件。
const upload = multer({
storage: storage,
limits: {
fileSize: 2 * 1024 * 1024, // 2 MB
files: 10
}
})
步骤四:编写上传路由
最后一步是编写上传路由,将上传中间件作为参数传入路由中。在示例中,我们使用post
方法提交表单,并将上传文件的信息存储在req.file
中。
app.post('/upload', upload.single('file'), (req, res) => {
console.log(req.file)
res.send('Upload success')
})
示例
示例一:上传单个文件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Upload File</title>
</head>
<body>
<form action="/upload" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" value="Upload">
</form>
</body>
</html>
在表单中选择一个文件并点击上传按钮后,上传成功后会返回Upload success
信息,并在控制台中输出上传文件的信息。
示例二:上传多个文件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Upload Files</title>
</head>
<body>
<form action="/upload" method="post" enctype="multipart/form-data">
<input type="file" name="files" multiple>
<input type="submit" value="Upload">
</form>
</body>
</html>
在表单中选择多个文件并点击上传按钮后,上传成功后会返回Upload success
信息,并在控制台中输出上传文件的信息。
以上是node.js使用express框架进行文件上传的详细攻略,希望可以对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:node.js使用express框架进行文件上传详解 - Python技术站