美文网首页PHP知识
Nodejs 文件上传

Nodejs 文件上传

作者: _不能说的秘密i | 来源:发表于2018-09-11 21:11 被阅读16次

node js 接收表单数据原理

/**
 * node js 接收表单数据
 */
const http = require("http");
const qs   = require("querystring");

http.createServer((request, response) => {
    // 表单提交的原理
    if (request.url === "/post" && request.method.toLowerCase() === "post") {
        // 1. 设置接收的变量
        let formData = "";

        // 2. 接收小段数据
        request.on("data", buf => {
            formData += buf;
        });

        // 3. 监听所有数据传递完毕事件
        request.once("end", () => {
            formData = qs.parse(formData);
            console.log(formData); // object
            console.log("数据接收完成");
        });
    }
}).listen(3000);

使用 formidable 上传文件

/**
 * 使用formidable上传图片
 */
const http = require("http");
const fs   = require("fs");
const formidable = require("formidable");
const uuidv1 = require("uuid/v1");
const path = require("path");

http.createServer((request, response) => {
    if (request.url == "/") {
        fs.readFile(__dirname+"/index.html", (err, data)=>{
            if (err) {throw err;}
            response.setHeader("content-type", "text/html;charset=utf8;");
            response.end(data.toString());
        });
    }

    if (request.url === "/post" && request.method.toLowerCase() === "post") {
        // 1.实例化对象
        const form = new formidable();
        // 2.设置文件上传的路径, 默认就会自动上传到这个目录中,这个目录必须要存在,否则报错, 不建议使用相对路径
        form.uploadDir = __dirname + '/uploads';


        // 3.获取表单内容
        form.parse(request, (err, fields, files)=> {
            /****************** 利用formidable的文件名
            // 3.1 获取原文件名
            let ext     = path.extname(files.file.name);
            // 3.2 获取上传文件的路径
            let oldPath = files.file.path;
            // 3.3 拼接新路径
            let newPath = oldPath + ext;
            console.log(newPath);
            // 3.4 修改文件名
   
            或者使用 uuid 这个包, 二选一
            ************************************/
            // 3.1 获取独一无二的一个字符串 uuid 
            let uuid = uuidv1();
            // 3.2 获取上传文件的后缀
            let ext = path.extname(files.file.name);
            // 3.3 获取路径
            let oldPath = files.file.path;
            let newPath = __dirname + "/uploads/" + uuid + ext;
            // 3.4 修改文件名
            
            fs.rename(oldPath, newPath, err=>{
                if (err) throw err;
                response.end("文件上传成功");
            });
            response.end("images");
        });
    }
    // response.end("404");
}).listen(3000);

相关文章

  • 前端干货链接-持续更新

    前端文件上传 拖拽上传、图片预览、文件上传nodejs-process-excel :nodejs解析或导出exc...

  • 求解一个nodeJs 的文件访问问题

    开发环境 后端:nodeJs 前端:Vue 需求:视频文件上传,视频预览 问题:上传已经可以实现,存在nodeJs...

  • Nodejs 文件上传

    node js 接收表单数据原理 使用 formidable 上传文件

  • NodeJS文件上传

    使用multer上传文件,默认不会给文件添加扩展名 一、package.json 二、app.js 三、uploa...

  • nodejs 文件上传

    图片文件上传、在调试的时候 使用 multer 一直报错,所以最后选择使用 connect-multiparty ...

  • NodeJS 文件上传

    keywords multipart/form-data HTML entity 各依赖功能描述 formidab...

  • ftp 上传模式

    在使用 nodejs 实现 ftp 文件上传的过程中,我发现文本文件可以正常上传,但是图片文件则不行。图片被上传后...

  • node安装(linux)

    1、下载 https://nodejs.org/zh-cn/download/ 2、上传 rz上传文件 3、解压 ...

  • nodejs 实现文件上传

    文件上传需要解析文件,之前我们解析数据使用body-parser,解析文件可以用multer。body-parse...

  • nodejs 实现文件上传

    前端页面结构 node 服务端 需用到connect-multiparty 模块 npm install conn...

网友评论

    本文标题:Nodejs 文件上传

    本文链接:https://www.haomeiwen.com/subject/barpgftx.html