nodejs上传图片模块做法;

服务端代码:

 1 var express = require('express');
 2 var swig = require('swig');
 3 //1、引入multer模块
 4 var multer = require('multer');
 5 var fs = require('fs');
 6 var path = require('path');
 7 var redis = require('./modules/redis');
 8 
 9 var app = express();
10 app.use(express.bodyParser());
11 //设置swig模板方法;
12 app.engine('html', swig.renderFile);
13 app.set('view engine', 'html');
14 app.set('views', __dirname + '/views');
15 
16 // Using Multer for file uploads.
17 //2、配置multer中间件参数;
18 app.use(multer({ dest: './uploads/'}));
19 //3、设置路由参数,原理就是通过第2步中的中间件后,req.files会带上传过来的图片信息;
20 app.post('/form',function(req,res){
21 
22     //console.log(req.files.image);  // 上传的文件信息
23     //console.log(req.body);
24     //console.log(req.files);
25 
26     var des_file = __dirname + "/uploads/" + req.files.image.originalFilename;
27     console.log(__dirname);
28     console.log(req.files.image.originalFilename);
29     console.log(des_file);
30 
31 //4、图片上传进来后,被保存在内存路径中(个人理解,很重要,姑且这样理解);
32     fs.readFile( req.files.image.path, function (err, data) {
33         console.log(data)
34 
35 //5、通过fs模块读取图片保存的内存路径,并将图片读出的信息,保存到设置好的目录里;
36         fs.writeFile(des_file, data, function (err) {
37             if( err ){
38                 console.log( err );
39             }else{
40                 response = {
41                     message:'File uploaded successfully',
42                     filename:req.files.image.originalFilename
43                 };
44             }
45             //console.log( response );
46             res.end( JSON.stringify( response ) );
47         });
48     });
49 });
50 
51 
52 app.post('/',function(req,res){
53     if(!(req.body.owner&&req.body.type&&req.body.content)){
54         if(req.body.type&&(["male","female"].indexOf(req.body.type) === -1)){
55             return res.json({code:0,msg:"类型错误"})
56         }
57         return res.json({code:0,msg:"信息不完整"})
58     }
59     redis.throw(req.body,function(result){
60         res.json(result);
61     })
62 });
63 
64 app.get('/',function(req,res){
65     console.log(req.query);
66     if(!req.query.user){
67         return res.json({code:0,msg:"信息不完整"});
68     }
69     if(req.query.type && (["male","female"].indexOf(req.query.type) === -1)){
70         return res.json({code:0,msg:"类型错误"});
71     }
72     redis.pick(req.query,function(result){
73         res.json(result);
74     })
75 });
76 app.get('/form',function(req,res){
77     res.render('form');
78 });
79 
80 //require("./test/test.js").b();
81 //
82 //
83 //require("./test/test.js").a();
84 //var cc = require("./test/test");
85 //cc.b();
86 //cc.a();
87 
88 app.listen(3000);

前端form表单代码:

 1 <!doctype html>
 2 <html >
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Document</title>
 6 </head>
 7 <body>
 8 <!--form若是上传图片必须带上这个属性  enctype="multipart/form-data"-->
 9 <form action="" method="post" enctype="multipart/form-data">
10     <input type="text" name="owner" value="123131414"/>
11     <input type="file" name="image"/>
12     <input type="submit" value="上传文件" />
13 </form>
14 </body>
15 </html>

最重要的一点是:

<input type="file" name="image"/>
必须加上 name="image"
必须加上 name="image"
必须加上 name="image"
重要的事情说三遍