Nodejs 求一个上传文件的小例子,网上能找到的都是有问题的,我用的是express 版本是最新的

Nodejs 求一个上传文件的小例子,网上能找到的都是有问题的,我用的是express 版本是最新的

5 回复

Nodejs 求一个上传文件的小例子,网上能找到的都是有问题的,我用的是express 版本是最新的

在使用最新的Express版本时,上传文件可能会遇到一些问题,因为Express本身并不直接支持文件上传。你需要使用中间件如multer来处理文件上传功能。以下是一个简单的示例,展示了如何使用Express和Multer来实现文件上传。

安装依赖

首先,确保你已经安装了Express和Multer。如果你还没有安装这些依赖,可以通过npm来安装:

npm install express multer

创建项目结构

假设你的项目结构如下:

project/
│
├── app.js
├── uploads/
└── package.json
  • app.js 是你的主应用文件。
  • uploads/ 是存储上传文件的目录。
  • package.json 包含项目的依赖信息。

编写代码

接下来,在app.js中编写代码以设置Express服务器和配置Multer:

const express = require('express');
const multer = require('multer');
const path = require('path');

const app = express();
const PORT = process.env.PORT || 3000;

// 设置Multer存储配置
const storage = multer.diskStorage({
    destination: function (req, file, cb) {
        cb(null, 'uploads/')
    },
    filename: function (req, file, cb) {
        cb(null, Date.now() + path.extname(file.originalname)) // 使用时间戳和原始文件扩展名作为文件名
    }
});

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

// 创建上传路径
app.use('/uploads', express.static('uploads'));

// 设置路由
app.get('/', (req, res) => {
    res.send(`
        <form action="/upload" method="post" enctype="multipart/form-data">
            <input type="file" name="file" />
            <button type="submit">Upload</button>
        </form>
    `);
});

app.post('/upload', upload.single('file'), (req, res) => {
    if (!req.file) {
        return res.status(400).send('No file uploaded.');
    }
    res.send(`File uploaded successfully. File path: ${req.file.path}`);
});

app.listen(PORT, () => {
    console.log(`Server is running on http://localhost:${PORT}`);
});

运行应用

保存所有更改后,运行你的应用:

node app.js

现在,你可以通过访问http://localhost:3000来测试文件上传功能。选择一个文件并点击“Upload”按钮,文件将被上传到uploads/目录,并返回文件的路径。

总结

这个示例展示了如何使用Express和Multer来实现基本的文件上传功能。通过配置Multer的存储选项,你可以控制上传文件的位置和命名规则。希望这个示例能帮助你解决文件上传的问题。


来个人啊,网上找到的都是用的之前版本的express.现在的express没有Body-parser了。

var multipart = require('connect-multiparty');
var multipartMiddleware = multipart();
app.post('/upload', multipartMiddleware, function(req, resp) {
  console.log(req.body, req.files);
  // don't forget to delete all req.files when done
});

建议了解清楚HTTP协议的上传机制

app.use(mult());
app.use(mult({ uploadDir: 'd:\' }));

定义了两次???应该一个就够了…

app.use(mult({ uploadDir: 'd:\' }));

当然可以。以下是一个使用Express和multer库实现文件上传的小例子。Multer是一个节点JS中间件,专门用于处理multipart/form-data,主要用于上传文件。

首先,确保你的项目中已经安装了Express和Multer。如果还没有安装,可以通过npm来安装:

npm install express multer

接下来是具体的代码实现:

1. 安装依赖

如上所述,确保已经安装了expressmulter

2. 创建服务器

创建一个名为app.js的文件,并添加以下代码:

const express = require('express');
const multer = require('multer');

const app = express();
const upload = multer({ dest: 'uploads/' }); // 设置文件存储位置

// 设置静态文件目录,方便查看上传的文件
app.use('/uploads', express.static('uploads'));

// 文件上传路由
app.post('/upload', upload.single('file'), (req, res) => {
    res.send(`File uploaded successfully. Name: ${req.file.filename}`);
});

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

3. 运行服务器

在命令行中运行以下命令启动服务器:

node app.js

4. 测试上传功能

你可以使用Postman或任何HTTP客户端发送POST请求到http://localhost:3000/upload,并包含一个名为file的文件字段来测试文件上传功能。

例如,使用curl命令进行测试:

curl -X POST -F "file=@/path/to/your/file" http://localhost:3000/upload

替换/path/to/your/file为你要上传的实际文件路径。

5. 查看上传的文件

上传完成后,你可以在项目根目录下的uploads文件夹中找到上传的文件。此外,你还可以通过访问http://localhost:3000/uploads/filename来查看文件(假设文件名为filename)。

以上就是使用Express和Multer实现的简单文件上传功能。希望这能帮助你解决问题!

回到顶部