思路
- 本地选择图片文件之后,将图片文件转换成base64的数据格式
- 将base64的数据通过ajax专递到后台(post)
- 后台将base64的数据解析成图片进行保存到服务器上
文件结构
├── page
├── js
├── js.js
├── html.html
├── dao
├── dataDao.js
└── node.js
html
<input type="file" name="file" accept="image/*" id="file">
<div class="sureToUpDataImg">确认上传</div>
js
$("#file").change(() => {
let reader = new FileReader();
let AllowImgFileSize = 2100000;
let file = $("#file")[0].files[0];
let imgUrlBase64;
if (file) {
imgUrlBase64 = reader.readAsDataURL(file);
reader.onload = function(e) {
if (AllowImgFileSize != 0 && AllowImgFileSize < reader.result.length) {
alert('上传失败,请上传2M以内的图片!');
return;
} else {
$(".sureToUpDataImg").click(() => {
$.post("/upload", {
"teachID": sessionStorage['teachID'],
"imgData": reader.result,
}, data => {
console.log(data);
})
})
}
}
}
})
node.js
let dao = require("./dao/dataDao.js");
const express = require("express");
const fs = require("fs");
const bodyParser = require('body-parser')
const app = express();
app.use(bodyParser.json({ limit: '50mb' }));
app.use(bodyParser.urlencoded({ limit: '50mb', extended: true }));
app.use(express.static("page"));
app.post('/upload', function(req, res) {
let imgData = req.body.imgData;
if (imgData) {
let base64Data = imgData.replace(/^data:image\/\w+;base64,/, "");
let dataBuffer = new Buffer.from(base64Data, 'base64');
let saveUrl = "./page/headImg/" + (new Date()).getTime() + ".png";
fs.writeFile(saveUrl, dataBuffer, function(err) {
if (err) {
res.send(err);
} else {
dao.upDataTeachImg(
req.body.teachID, saveUrl.slice(6),
(err, result) => {
if (err) {
send(err);
} else {
res.send("1");
}
}
)
}
});
}
});
app.listen(8080, () => {
console.log('Server running at 8080 port');
});
/dao/dataDao.js
const mysql = require("mysql");
let connection = mysql.createConnection({
host: '127.0.0.1',
port: '3306',
user: 'root',
password: '123456',
database: 'wlw_db',
multipleStatements: true,
});
connection.connect((err) => {
console.log(err ? "connconnect fail!!!" : "connect success!!!");
});
let upDataTeachImg = function(teachID, saveUrl, callback) {
let sql = `update teacherData set teachImg = '${saveUrl}'
where teachID = '${teachID}'`;
connection.query(sql, function(err, result) {
callback(err, result);
})
}
exports.upDataTeachImg = upDataTeachImg;