123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- // 附件
- import express from "express";
- import path from "path";
- import fs from "node:fs";
- import { files_insert, ishaveFileBymd5, getFileBymd5 } from "#db";
- import { shanghaiTime, dirExists } from "#utils";
- const router = express.Router();
- 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: shanghaiTime().format("YYYY-MM-DD HH:mm:ss"),
- update_time: shanghaiTime().format("YYYY-MM-DD HH:mm:ss"),
- };
- uploadPath = "./base_files/" + sampleFile.md5;
- dirExists("./base_files/");
- // 、移动上传文件至指定目录
- 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;
|