84 lines
1.9 KiB
JavaScript
84 lines
1.9 KiB
JavaScript
/*
|
|
* @Author: jukaifeng jukaifeng@lingtu.com
|
|
* @Date: 2024-10-24 09:00:33
|
|
* @LastEditors: jukaifeng jukaifeng@lingtu.com
|
|
* @LastEditTime: 2024-10-24 13:52:24
|
|
* @FilePath: /case-uploads/server/index.js
|
|
* @Description:
|
|
*/
|
|
const express = require('express');
|
|
const bodyParser = require('body-parser');
|
|
const multer = require('multer');
|
|
const { writeFileSync } = require('fs');
|
|
const { resolve } = require('path');
|
|
|
|
const app = express();
|
|
app.use(bodyParser.json({ limit: '50mb' }));
|
|
|
|
|
|
const storage = multer.diskStorage({
|
|
destination: (req, file, cb) => {
|
|
cb(null, 'uploads/');
|
|
},
|
|
filename: (req, file, cb) => {
|
|
const ext = file.originalname.split('.').pop();
|
|
cb(null, file.originalname + '-' + Date.now()) + '.' + ext;
|
|
}
|
|
});
|
|
const upload = multer({ storage });
|
|
|
|
|
|
app.all('*', (req, res, next) => {
|
|
res.header('Access-Control-Allow-Origin', '*');
|
|
res.header('Access-Control-Allow-Headers', 'Content-Type, x-ext');
|
|
res.header('Access-Control-Allow-Methods', 'PUT, POST');
|
|
next();
|
|
});
|
|
|
|
|
|
|
|
// multipart/form-data上传模式
|
|
app.post('/upload', upload.single('file'), (req, res) => {
|
|
if (req.file) {
|
|
res.send({
|
|
code: 'success'
|
|
});
|
|
} else {
|
|
res.send({
|
|
code: 'error'
|
|
});
|
|
}
|
|
});
|
|
|
|
|
|
// base64上传模式
|
|
app.post('/base64', (req, res) => {
|
|
const { file, ext } = req.body;
|
|
const binaryData = Buffer.from(file, 'base64');
|
|
|
|
writeFileSync(resolve(__dirname, `uploads/${Date.now()}.${ext}`), binaryData, 'binary');
|
|
res.send({
|
|
code: 'success'
|
|
});
|
|
});
|
|
|
|
|
|
// 二进制上传模式
|
|
app.post('/binary', (req, res) => {
|
|
const ext = req.headers['x-ext'];
|
|
const buffers = [];
|
|
req.on('data', (chunk) => {
|
|
buffers.push(chunk);
|
|
}).on('end', () => {
|
|
const binaryData = Buffer.concat(buffers);
|
|
writeFileSync(resolve(__dirname, `uploads/${Date.now()}.${ext}`), binaryData);
|
|
res.send({
|
|
code: 'success'
|
|
});
|
|
});
|
|
});
|
|
|
|
|
|
app.listen(3000, () => {
|
|
console.log('Server is running on port 3000');
|
|
}); |