node文件上传server

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...)}}

node文件上传server

上一篇:Apache网页优化


下一篇:CSS——文本样式