悠悠楠杉
创建一个基于Node.js的图片上传服务,包括前端和后端开发,使用Express框架和Multer中间件处理文件上传。
1. 环境准备
首先,确保你的开发环境中已安装Node.js和npm(Node包管理器)。你可以从nodejs.org下载并安装Node.js。
2. 创建项目和安装依赖
在你的工作目录中创建一个新文件夹,例如
image-upload-service
,然后初始化一个新的Node.js项目:
bash mkdir image-upload-service cd image-upload-service npm init -y
安装Express和Multer:
bash npm install express multer cors body-parser --save
这里我们还安装了cors
和body-parser
来处理跨域请求和解析请求体。
3. 设置Express服务器和Multer配置
创建一个名为 app.js
的文件,并设置基本的Express服务器和Multer配置:
```javascript
const express = require('express');
const multer = require('multer');
const cors = require('cors');
const bodyParser = require('body-parser');
const app = express();
const port = 3000; // 定义端口号
// 配置Multer存储设置,这里使用磁盘存储方式保存文件到服务器上。
const storage = multer.diskStorage({
destination: function(req, file, cb) {
cb(null, 'uploads/'); // 保存路径(注意需要手动创建)
},
filename: function(req, file, cb) {
cb(null, file.fieldname + '-' + Date.now() + path.extname(file.originalname)); // 生成文件名,包含时间戳以避免重名问题。使用 path 模块可以引入 node 的 path 模块来处理文件名路径。
}
});
const upload = multer({ storage: storage }); // 使用配置的存储设置创建 upload 实例。
// 使用中间件允许跨域请求、解析JSON和解析URL编码数据。
app.use(cors());
app.use(bodyParser.json()); // 解析JSON数据。
app.use(bodyParser.urlencoded({ extended: true })); // 解析URL编码数据。
app.use(express.static('public')); // 提供静态文件服务,如HTML、CSS等。需要创建 public 文件夹。
```
在上述代码中,我们设置了Multer的存储设置以保存上传的图片到服务器的 uploads/
文件夹(请确保此文件夹在项目目录中已存在或代码中添加创建此文件夹的逻辑)。我们使用了Date.now()
生成一个唯一文件名来避免重名问题。同时,我们添加了CORS和Body-Parser中间件以支持跨域请求和解析请求体数据。最后,我们通过express.static()
提供静态文件服务,以便前端可以访问CSS等资源。 接下来我们将添加一个API端点来处理图片上传: