夺命雷公狗---node.js---11之文件上传

我们在做文件上传前需要用npm来安装一个插件先,

首先打开项目所在的目录,然后按住shift键然后右键鼠标进入命令行安装formidable

 

 

 

然后开始编写上传的静态页面:

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h1>附件上传表单</h1>
    <form name="index" action="/post" method="post" enctype="multipart/form-data">
        <label>附件:<input type="file" name="fujian"></label><br /><br />
        <input type="submit" value="上传">
    </form>
</body>
</html>

 

然后开始编写index.js文件,必须先引入刚才下载好的formidable模块

 

详细代码如下所示:

 

var http = require('http'),
    fs = require('fs'),
    url = require('url'),
    util = require('util'),
    formidable = require('formidable'),
    querystring = require('querystring');
var server = http.createServer(function(req,res){
    var pathname = url.parse(req.url).pathname;
    if(pathname == '/index'){
        var pageContent = fs.readFile('index.html','utf-8',function(err,data){
            if(err){
                console.log('Server error:111');
            }else{
                res.writeHead(200,{"Content-Type":"text/html"});
                res.write(data);
                res.end();
            }
        });
    }else if(pathname == '/post'){
        var form = new formidable.IncomingForm();
        form.uploadDir = './temp';
        form.parse(req,function(err,fields,files){
            res.writeHead(200,{"Content-Type":"text/html"});
            console.log(files);//看下文件上传信息
            var path = files.fujian.path;
            var timestamp = (new Date()).valueOf(); //生成时间戳,然后在下面用时间戳给图片命名
            fs.rename(files.fujian.path,"./temp/"+timestamp+'.jpg');//这里的temp目标必须提前准备好,不然报错
            res.end();
        });
    }else{
        res.writeHead(404,{"Content-Type":"text/plain"});
        res.end('error:404');
        console.log('error');
    }
});
server.listen(3323);
console.log('@http://localhost:3323');

 

 

然后进行测试。。。

 

 

 

这样我们即可成功完成上传功能....

posted @ 2016-08-14 03:36  夺命雷公狗  阅读(187)  评论(0编辑  收藏  举报