12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- // 附件
- import express from "express";
- import path from "path";
- import fs from "node:fs";
- import {files_insert, ishaveFileBymd5, getFileBymd5} from '#db';
- import { computeFileMD5 } from '#utils';
- const router = express.Router();
- import dayjs from 'dayjs'
- router.use(function timeLog(req, res, next) {
- console.log("Time: ", Date.now());
- next();
- });
- router.get("/:fileId", async function (req, res) {
- const fileId = req.params.fileId; // 获取 fileId 参数
- const fileRow = await getFileBymd5(fileId)
- if(!fileRow) {
- return res.status(404).send("文件查询失败");
- }
- const uploadPath = './base_files/' + fileId;
- const filePath = path.resolve(uploadPath);
- // 检查文件是否存在
- if (!fs.existsSync(filePath)) {
- return res.status(404).send("服务器中不存在该文件");
- }
- // 返回文件
- res.setHeader("Content-Type", fileRow.mimetype);
- res.sendFile(filePath);
- });
- // 上传附件
- router.put("/", async function (req, res) {
- let sampleFile;
- let uploadPath;
- if (!req.files || Object.keys(req.files).length === 0) {
- return res.status(400).send('No files were uploaded.');
- }
- sampleFile = req.files.sampleFile;
- // const fileMd5 = await computeFileMD5(sampleFile);
- const fileMd5 = sampleFile.md5;
- // 如果存在重复的数据, 终止后续的操作
- if(await ishaveFileBymd5(fileMd5)) {
- res.send({
- file_id: fileMd5
- });
- return
- }
- const fileInfo = {
- name: sampleFile.name,
- mimetype: sampleFile.mimetype,
- size: sampleFile.size,
- md5: sampleFile.md5,
- create_time: dayjs().format('YYYY-MM-DD HH:mm:ss'),
- update_time: dayjs().format('YYYY-MM-DD HH:mm:ss'),
- }
- uploadPath = './base_files/' + sampleFile.md5;
- // 、移动上传文件至指定目录
- sampleFile.mv(uploadPath, async function(err) {
- if (err) {
- return res.status(500).send(err);
- }
- const isAdd = await files_insert(fileInfo)
- if(!isAdd) {
- res.status(500).send({
- msg: '添加失败'
- });
- return
- }
- res.send({
- file_id: fileMd5
- });
- });
- });
- // define the about route
- router.get("/about", function (req, res) {
- res.send("About files");
- });
- export default router;
|