一、Node后端实现
const express = require('express');const multer = require('multer');const app = express();const upload = multer({dest: 'c:/tmp'});// 单个文件的上传app.post('/upload', upload.single('avator'), (req, res) => {res.send(req.file);})// 多个文件的上传app.post('/uploadMany', upload.array('photos', 3), (req, res) => {res.send(req.files);})app.listen(3000);
二、前端代码
1. form表单文件上传
<form action="/upload" method="POST" enctype="multipart/form-data"><input type="file" name="avatar" /><input type="submit" value="提交" /></form>
注意:enctype 属性, 它有三个可选值:
**
| 值 | 描述 |
|---|---|
| application/x-www-form-urlencoded | 在发送前编码所有字符(默认) |
| multipart/form-data | 不对字符编码。在使用包含文件上传控件的表单时,必须使用该值。 |
| text/plain | 空格转换为 “+” 加号,但不对特殊字符编码。 |
2. jquery ajax
var formData = new FormData();formData.append('avatar', $('input[name="avatar"]')[0].files[0]);$.ajax({url: '/upload',type: 'POST',data: formData,processData: false, // 注意contentType: false, // 注意success: function () {}})
3. axios ajax
var formData = new FormData();formData.append('avatar', $('input[name="avatar"]')[0].files[0]);axios.post('/upload', formData, {headers: {'Content-Type': 'multipart/form-data'}})
