博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Nodejs 文件上传
阅读量:6827 次
发布时间:2019-06-26

本文共 2405 字,大约阅读时间需要 8 分钟。

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);

转载于:https://www.cnblogs.com/liaohui5/p/10581624.html

你可能感兴趣的文章
spring集成 JedisCluster 连接 redis3.0 集群
查看>>
DOM基础2
查看>>
什刹海记忆
查看>>
硬盘分区时GPT和MBR的区别/选择
查看>>
Nginx 配置简述
查看>>
css后代选择器(div.class中间不带空格)
查看>>
在CentOS下利用Python+selenium获取腾讯首页的今日话题。
查看>>
Chapter 2 Open Book——38
查看>>
word break相关问题的解法
查看>>
java中Scanner的nextLine()和next()的区别
查看>>
Dig
查看>>
21:二维数组右上左下遍历
查看>>
android camera(一):camera模组CMM介绍【转】
查看>>
BZOJ 2821: 作诗(Poetize) [分块]
查看>>
TCP协议三次握手过程分析
查看>>
set排序(个人模版)
查看>>
Codeforces Round #404 (Div. 2) D. Anton and School - 2 数学
查看>>
windows进程中的几个杂项-hpguard 进程终止
查看>>
Window 7 + Ubuntu 双系统安装
查看>>
instance 怎么获得自己的 Metadata - 每天5分钟玩转 OpenStack(169)
查看>>