• 夺命雷公狗---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');

    然后进行测试。。。

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

  • 相关阅读:
    CodeForces 156B Suspects(枚举)
    CodeForces 156A Message(暴力)
    CodeForces 157B Trace
    CodeForces 157A Game Outcome
    HDU 3578 Greedy Tino(双塔DP)
    POJ 2609 Ferry Loading(双塔DP)
    Java 第十一届 蓝桥杯 省模拟赛 19000互质的个数
    Java 第十一届 蓝桥杯 省模拟赛 19000互质的个数
    Java 第十一届 蓝桥杯 省模拟赛 19000互质的个数
    Java 第十一届 蓝桥杯 省模拟赛十六进制转换成十进制
  • 原文地址:https://www.cnblogs.com/leigood/p/5769425.html
Copyright © 2020-2023  润新知