• node.js系列(实例):原生node.js+formidable模块实现简单的文件上传


     1 /**
     2  * 原生node.js结合formidable模块实现图片上传改名
     3  * @Author:Ghost
     4  * @Date:2016/07/15
     5  * @description:
     6  * 1、引入模块http、formidable、fs、silly-datetime、path
     7  * 2、创建http服务器
     8  * 3、实例化formidable对象并调用IncomingForm()方法
     9  * 4、调用uploadDir属性设置文件上传路径
    10  * 5、调用formidable parse()方法对表单进行解析
    11  * 6、调用fs的rename()方法对上传的文件进行重命名
    12  * 7、结束程序
    13  */
    14 
    15 //引入模块
    16 var http = require('http');
    17 var formidable = require('formidable');
    18 var fs = require('fs');
    19 var sd = require('silly-datetime');
    20 var path = require('path');
    21 var util = require('util');
    22 //创建服务器
    23 var server = http.createServer(function (req,res) {
    24     //上传表单数据接收
    25     if(req.url === '/upload_setname' && req.method.toLowerCase() === 'post')
    26     {
    27         //实例化formidable对象,然后调用该对象下的IncomingForm()方法
    28         var form = formidable.IncomingForm();
    29 
    30         //调用form.uploadDir属性设置文件上传的路径
    31         form.uploadDir = "./uploads";
    32 
    33         //调用form.parse()方法表单提交的所有数据,字段、文件等
    34         form.parse(req,function (err, fields, files) {
    35             //如果出错则终止程序并抛出错误
    36             if(err)
    37             {
    38                 throw err;
    39             };
    40 
    41             //调用fs模块进行文件改名的rename(oldpath,newpath,callback)方法改名,该方法接收三个参数
    42             var oldpath = __dirname+'/'+files.upload.path;
    43 
    44             //新路径由三部分组成,时间戳、随机数、扩展名
    45             var time = sd.format(new Date(),"YYYYMMDDHHmmss");
    46             var random = parseInt(Math.random() * 89999 + 10000);
    47             var extname = path.extname(files.upload.name);
    48             var newpath = __dirname + "/uploads/" + time + random + extname;
    49 
    50             fs.rename(oldpath,newpath, function (err) {
    51                 //如果出错则终止程序并抛出错误
    52                 if(err)
    53                 {
    54                     throw Error("upload error");
    55                 };
    56                 //设置MIME类型
    57                 res.writeHead(200,{"Content-Type":"text/html;charset=UTF-8"});
    58 
    59                 //打印检查信息
    60                 res.end(util.inspect({fields: fields, files: files}));
    61                 //响应结束,输出结果信息
    62                 res.end("success");
    63             });
    64         });
    65     };
    66 });
    67 //设置监听端口
    68 server.listen(3000, "127.0.0.1", function () {
    69     console.log("server is started listen port 3000");
    70 });
    技术交流群:821039247
  • 相关阅读:
    css Tab选项卡1
    顺序栈的相关操作(初始化、入栈、出栈)
    用jdk在cmd下运行编译java程序
    UNIX标准及实现
    正则表达式
    gdb调试
    CSS 公共样式
    babel更新之后的 一些坑
    webpack4.x配置详情
    webpack4.x打包配置
  • 原文地址:https://www.cnblogs.com/humaotegong/p/5673805.html
Copyright © 2020-2023  润新知