Nodejs 请教express3.5怎么配置上传文件路径呢?

Nodejs 请教express3.5怎么配置上传文件路径呢?

connect3.0以后不建议使用bodyParser()了, 改用 app.use(connect.urlencoded()) app.use(connect.json()) 该嗯么配置上传文件路径呢

10 回复

Nodejs 请教express3.5怎么配置上传文件路径呢?

在Express 3.5中配置文件上传功能需要使用一些中间件来处理文件上传。Connect 3.0之后,bodyParser()不再推荐使用,而是应该使用bodyParser.urlencoded()bodyParser.json()来解析表单数据和JSON数据。

为了处理文件上传,你可以使用multer库。Multer是一个专门为处理multipart/form-data的中间件,主要用于上传文件。

安装Multer

首先,你需要安装Multer:

npm install multer --save

配置Multer

接下来,你需要配置Multer来指定文件上传的目标路径。以下是一个简单的例子,展示了如何配置Multer来处理文件上传,并将文件保存到指定目录。

var express = require('express');
var app = express();
var multer = require('multer');

// 设置存储引擎
var storage = multer.diskStorage({
    destination: function (req, file, cb) {
        cb(null, './uploads/') // 指定文件保存路径
    },
    filename: function (req, file, cb) {
        cb(null, file.fieldname + '-' + Date.now()) // 指定文件名
    }
});

var upload = multer({ storage: storage });

// 使用Multer中间件
app.use(express.urlencoded({ extended: false }));
app.use(express.json());

// 示例路由:处理文件上传
app.post('/upload', upload.single('file'), function (req, res, next) {
    // 文件保存在req.file
    if (!req.file) {
        return res.status(400).send('No file uploaded.');
    }
    res.send('File uploaded successfully!');
});

app.listen(3000, function () {
    console.log('Server is running on port 3000');
});

解释

  1. 设置存储引擎multer.diskStorage()方法用于定义文件存储的位置和文件名。
  2. 配置Multer:创建一个multer实例,并将其传递给upload.single('file'),这表示处理单个文件上传,文件字段名为file
  3. 路由处理/upload路由会处理文件上传请求,文件会被保存到./uploads/目录下。
  4. 错误处理:如果未接收到文件,则返回400状态码并提示“没有文件上传”。

这样,你就可以成功配置Express 3.5来处理文件上传,并将文件保存到指定路径。


Google 不到答案吗?

找半天,木有啊

顶一下,没有人回答么,都没有人做过文件上传么

app.use(express.bodyParser({
  keepExtensions: true,
  uploadDir: __dirname + '/temp',
  limit: '20mb'
}))

继续用吧,等你升到4.0再换

3楼正解

可以试试我写的 express-fileuploader,或者直接使用 connect-multiparty 之类的 multiparty parser。

var express = require('express');
var mutilpart = require('connect-multiparty');

var app = express(); app.use(’/upload/image’, mutilpart()); app.post(’/upload/image’, function(req, res, next) { // req.files });

正解,谢谢

在Express 3.5中配置文件上传,你需要使用multer中间件来处理文件上传。以下是一个简单的示例,展示了如何设置上传文件路径。

首先,安装multer

npm install multer --save

然后,在你的Express应用中进行如下配置:

var express = require('express');
var app = express();
var multer = require('multer');

// 配置文件存储路径
var storage = multer.diskStorage({
    destination: function (req, file, cb) {
        cb(null, 'uploads/') // 设置文件保存路径
    },
    filename: function (req, file, cb) {
        cb(null, file.fieldname + '-' + Date.now()) // 设置文件名
    }
});

var upload = multer({ storage: storage });

// 创建一个上传单个文件的路由
app.post('/upload', upload.single('file'), function (req, res, next) {
    // 文件保存到 `uploads/` 目录下
    res.send(req.file);
});

// 启动服务器
app.listen(3000, function () {
    console.log('Server is running on http://localhost:3000');
});

在这个例子中:

  • destination 函数指定了文件的存储目录。
  • filename 函数设置了保存文件的名称。
  • upload.single('file') 表示允许上传一个名为file的文件。

确保你有一个名为uploads/的目录,以便于存放上传的文件。如果该目录不存在,你可以添加一些错误处理逻辑以创建它。

注意:本示例假设你已经正确设置了app.use(express.bodyParser())或等效的方法来解析请求体。如果你使用的是Express 4.x或更高版本,应该使用express.urlencoded()express.json()来替代旧的bodyParser方法。

回到顶部