关于node使用multer进行文件的上传与下载的完整攻略,可以分为以下几个步骤:
安装multer
使用npm进行安装,并将multer添加到项目的package.json中
npm install --save multer
文件上传
- 使用multer读取上传的文件,并使用
destination
参数将文件存储到指定目录中。
const multer = require('multer');
const storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, './uploads/')
},
filename: function (req, file, cb) {
cb(null, file.originalname)
}
});
const upload = multer({ storage: storage });
- 在POST请求中使用
upload.single
方法来定义接收单个文件上传,并指定前端表单中文件域的名称。req.file
属性将存储已上传的文件信息。
app.post('/upload', upload.single('file'), function (req, res, next) {
// req.file is the `file` file
// req.body will hold the text fields, if there were any
res.send('File uploaded successfully');
})
- 最后,在前端向指定接口发送POST请求即可上传文件。
文件下载
- 通过express中的
express.static
方法将存储文件的目录设置为静态文件路径,即可在前端通过文件名直接访问文件资源。
app.use('/files', express.static('uploads'));
- 在前端定义超链接或通过ajax请求,指定路径名获取指定文件,如下所示:
<a href="/files/fileName.png">下载文件</a>
$.ajax({
url: '/files/fileName.png',
success: function(data) {
console.log('File downloaded successfully');
}
});
示例1:在用户上传头像后将其保存到本地upload目录,并在前端展示出来
const express = require('express');
const multer = require('multer');
const app = express();
const path = require('path');
// 存储文件的目录
const uploadDir = path.join(__dirname, 'upload');
// 设置存储规则
const storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, uploadDir)
},
filename: function (req, file, cb) {
cb(null, file.originalname)
}
});
// 设置multer
const upload = multer({ storage: storage });
// 前端上传文件接口
app.post('/upload', upload.single('file'), function (req, res, next) {
// 获取已上传文件的名称,并返回给前端。
const fileName = req.file.originalname;
res.send(fileName);
});
// 设置静态文件路径,并开启服务器
app.use(express.static('public'));
app.listen(3000, function () {
console.log('Server running on port 3000');
});
示例2:从服务器下载一个文件,将其保存到本地,并在前端展示该文件
const fs = require('fs');
const path = require('path');
const request = require('request');
// 要下载的文件路径
const downloadUrl = 'http://example.com/files/image.jpg';
// 存储文件的路径
const filePath = path.join(__dirname, 'download', 'image.jpg');
// 发起get请求,下载文件
const writeStream = fs.createWriteStream(filePath);
const readStream = request.get(downloadUrl);
readStream.pipe(writeStream);
readStream.on('end', function() {
console.log('File downloaded successfully');
// 将下载的文件在前端进行展示
fs.readFile(filePath, function(err, data) {
if (err) throw err;
res.writeHead(200, {'Content-Type': 'image/jpg'});
res.end(data);
});
});
以上就是关于node使用multer进行文件的上传与下载的完整攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:关于node使用multer进行文件的上传与下载 - Python技术站