这是用nodejs写的上传图片

最近刚接触nodejs有点懵html

上传图片的话,首先得有一个html页面 下面是一个很是很是LOW的上传图片的页面node

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Document</title>
 6 </head>
 7 <body>
 8     <form action="/dopost" method="post" enctype="multipart/form-data">
 9         图片:<input type="file" name="image"><br/>
10         <button>提交</button><br/>
11     </form>
12 </body>
13 </html>

上传文件三要素 能够复习一下dom

而后就是nodejs的代码,再作这个以前 nodejs 必需要自行安装俩个模块:   post

silly-datetime (时间模块  后面也可加 --save)ui

formidable (处理上传文件的模块 自行了解一下)url

直接命令安装就能够!spa

下面就是上传图片的代码:3d

 1 // formidable 这个模块是用来处理上传文件的
 2 
 3 var http = require('http');  4 var fs = require('fs');  5 var path = require('path');  6 // 时间模块
 7 var datetime = require('silly-datetime');  8 // 文件上传模块
 9 var formidable = require('formidable'); 10 
11 
12 var hostname = '127.0.0.1'; 13 var port = '3000'; 14 
15 var server = http.createServer(function (req,res) { 16     // 处理请求和响应
17     // 屏蔽 favicon.ico
18     if(req.url == '/favicon.ico') {return}; 19     if(req.url == '/formfile') { 20 
21     // ./formfile.html 就是一个简单的html页面
22     // 拥有form 能提交文件便可
23         fs.readFile('./formfile.html',function(err,data) { 24  res.end(data); 25  }); 26     // dopost 是form表单中的action
27     }else if (req.url == '/dopost' && req.method.toLowerCase() == 'post') { 28         // 用formidable 来处理上传文件
29         var form = new formidable.IncomingForm(); 30 
31         // 设置上传文件 存放位置
32         form.uploadDir = "./uploads"; 33 
34         form.parse(req,function(err,fields,files) { 35 
36  console.log(fields); 37  console.log(files); 38 
39             // 改文件名
40             // 时间 + 随机数 + 后缀(文件名)
41 
42             // 引入的时间模块 silly-datetime 可自行下载
43             var time = datetime.format(new Date(),'YYYYMMDDHHmmss'); 44             // 生产5位的随机数
45             var num = parseInt(Math.random()*100000); 46             // 获取上传文件的文件名
47             var extname = path.extname(files.image.name); 48 
49             // 获取旧名字
50             // __dirname 表明当前项目 的根目录
51             // 拼凑完整路径
52             var oldname = __dirname + '/' + files.image.path; 53 
54             // 拼接新名
55             var newname = __dirname + '/uploads/'+ time + num + extname; 56             // 执行更名
57             fs.rename(oldname , newname,function(err){ 58                 res.writeHead(200,{"Content-Type":"text/html;charset = utf-8"}); 59                 res.end('ok'); 60  }); 61  }); 62 
63     }else{ 64         res.end('404'); 65  } 66 
67 }); 68 
69 
70 // function 可写可不写
71 server.listen(port,hostname,function(){ 72     //这里的function 可省略 ...
73     console.log('咱们都太伪装'); 74 });

这样就会上传到指定目录了!         code

大牛们不足指出还请给小白点建议!orm

相关文章
相关标签/搜索