ExpressJs上傳文件

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

就那麼簡單。

發佈了35 篇原創文章 · 獲贊 3 · 訪問量 47萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章