Nodejs 上传文件 放在指定目录
Nodejs 上传文件 放在指定目录
用什么方法放在指定目录呢?
比如 var target_path = ‘./datas/images/’ + req.files.thumbnail.name;
为什么一直是临时目录 { thumbnail: { fieldName: ‘thumbnail’, originalFilename: ‘Box2dWeb-2.1a.3.zip’, path: ‘/var/folders/h6/84pndq_d663bq3fsdrf4bsk80000gn/T/8676-3pi5it.zip’, headers: { ‘content-disposition’: ‘form-data; name=“thumbnail”; filename=“Box2dWeb-2.1a.3.zip”’, ‘content-type’: ‘application/zip’ }, ws: { _writableState: [Object], writable: true, domain: null, _events: [Object], _maxListeners: 10, path: ‘/var/folders/h6/84pndq_d663bq3fsdrf4bsk80000gn/T/8676-3pi5it.zip’, fd: null, flags: ‘w’, mode: 438, start: undefined, pos: undefined, bytesWritten: 106341, closed: true, open: [Function], _write: [Function], destroy: [Function], close: [Function], destroySoon: [Function], pipe: [Function], write: [Function], end: [Function], setMaxListeners: [Function], emit: [Function], addListener: [Function], on: [Function], once: [Function], removeListener: [Function], removeAllListeners: [Function], listeners: [Function] }, size: 106341, name: ‘Box2dWeb-2.1a.3.zip’, type: ‘application/zip’ } }
为了将上传的文件保存到指定目录中,你需要使用一个文件上传中间件,例如 multer
。Multer 是一个专门为 Node.js 设计的用于处理 multipart/form-data
的中间件,主要用于文件上传。
以下是使用 Multer 将文件保存到指定目录的示例代码:
安装 Multer
首先,安装 Multer:
npm install multer --save
设置 Multer
接下来,创建一个 Multer 实例,并配置其存储设置:
const express = require('express');
const multer = require('multer');
const app = express();
// 设置 Multer 存储
const storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, './datas/images/'); // 指定目标目录
},
filename: function (req, file, cb) {
cb(null, file.originalname); // 使用原始文件名作为新文件名
}
});
const upload = multer({ storage: storage });
// 创建一个处理文件上传的路由
app.post('/upload', upload.single('thumbnail'), (req, res) => {
res.send('File uploaded successfully!');
});
app.listen(3000, () => {
console.log('Server started on port 3000');
});
说明
- destination: 这个函数决定了文件应该被保存到哪个目录。在这个例子中,我们将其设置为
'./datas/images/'
。 - filename: 这个函数决定了文件上传后的文件名。在这个例子中,我们使用了文件的原始名称。你可以根据需要修改这个逻辑,例如添加时间戳或重命名文件。
测试
运行服务器后,你可以通过发送一个带有文件的 POST 请求来测试这个设置。例如,使用 Postman 或者任何 HTTP 客户端:
curl -X POST -F "thumbnail=@/path/to/your/file.zip" http://localhost:3000/upload
这样,上传的文件就会被保存到指定的目录中。