今天用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()即可将文件的默认路径改成目标路径,并且原路径中的文件必然就没了。
就那么简单。