ExpressJs上传文件

来源:互联网 发布:unity3d 间隔重复执行 编辑:程序博客网 时间:2024/05/29 13:56

今天用ExpressJs上传文件的时候,搜了好多博文但是总是不成功,最后终于试成功了,真的很简单,只是有几个注意的点,这里就这些点简单介绍。

第一、我这是在windows 7的环境下,不知道linux环境下如何,不过应该大同小异了;

第二、在客户端的表单提交中记得添加这样一个属性,enctype=“multipart/form-data”,简单代码如下:

 <form action="/uploadImg" method="post" id="upload" enctype="multipart/form-data">         <input type="file" name="uploadImg"/>         <input type="submit" value="upload"/>    </form>

第三、服务端读取文件,服务端读取文件跟读取表单的方式是类似的,req.files.元素name,若我们希望上传文件到默认的文件夹下(例如:./uploads),那么我们可以在app.js中的app.use(express.bodyParser())改成app.use(express.bodyParser(‘./uploads’)),在此注意:uploads目录必须存在,否则会报错;

第四、获取上传文件的基本信息,req.files.元素name.path:默认路径,.name:文件名,.size:文件大小等等

第五、如果要修改文件路径,需要用到fs文件,var fs = require("fs");如下服务端超级简单的代码:

app.post("/uploadImg",function(req,res){        console.log("文件默认属性:"+req.files.uploadImg);        var obj = req.files.uploadImg;        var tmp_path = obj.path;        var new_path = "./public/images/"+obj.name;        console.log("原路径:"+tmp_path);        fs.rename(tmp_path,new_path,function(err){            if(err){                throw err;            }        })    });

其实这一段代码是获取默认路径tmp_path,设定目标新路径new_path,再调用fs.rename()即可将文件的默认路径改成目标路径,并且原路径中的文件必然就没了。

就那么简单。

原创粉丝点击