path处理、分割路径方便;
fs可以提供修改文件名操作;
multer是http文件传输中间件;
iconv-lite转换中文编码库(没用上);
字符处理:1、直接扔掉文件名;2、要求前端显式的提供文件名;
const express = require("express"); const multer = require("multer"); const path = require("path"); const fs = require('fs'); const iconv = require("iconv-lite") const server = express(); var objMulter = multer({ dest: './files' }); server.use(objMulter.any()); server.post('/', (req, res, next) => { // var old_filePath = req.files[0].path; //读取已经存储后的路径; // var new_filename = req.files[0].filename; //读取已经存储后文件名; // if (req.body.filename) { //选择前端给出了filename // new_filename = req.body.filename; // } // var new_fileName = new_filename + path.parse(req.files[0].originalname).ext;//加后缀 // var new_filePath = req.files[0].destination + "/" + new_fileName;//加钱缀 // //准备改文件名; // console.log(old_filePath, "==>", new_filePath); // fs.rename(old_filePath, new_filePath, (err) => { // if (err) console.log("文件重命名失败"); // }); // urlname = new_filePath; // console.log(req.files[0]); // res.send({ // code: 1, // msg: "success", // urlname: urlname, // db_name:new_filename, // db_type:path.parse(req.files[0].originalname).ext, // db_size:req.files[0].size, // }) var fileData=req.files[0]; fileData.ext=path.parse(fileData.originalname).ext; fileData.id=fileData.filename; fileData.filename=fileData.id+fileData.ext; if(req.body.filename){//前端给出了改名建议 new_filepath=fileData.destination+"/"+req.body.filename+fileData.ext; }else{//没有前端建议也要添加后缀名 new_filepath=fileData.path+fileData.ext; } // console.log(fileData.path, "==>", new_filepath); fs.rename(fileData.path,new_filepath,(err) => { if (err) console.log("文件重命名失败"); }); fileData.urlname=new_filepath; res.send(fileData) }) server.listen(8080);
{{uploading-image-130288.png(uploading...)}}