今天用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()即可將文件的默認路徑改成目標路徑,並且原路徑中的文件必然就沒了。
就那麼簡單。