天天看點

node.js接收上傳的檔案

node.js是一門主要用來處理伺服器請求的語言,在處理請求的時候,表單是最為普通的一種請求,

在某種情況下,我們需要接受使用者上傳的檔案,一起來了解一下node.js中如何上傳檔案把,我在這裡

以上傳圖檔的例子。

nodejs中一個子產品被稱為formidable,可以使用npm install formidable使用npm進行下載下傳。

首先,需要建立一個formidable的對象。

var form=new formidable.IncomingForm();

上傳檔案,我們就需要考慮将檔案上傳到哪個目錄下。

form.uploadDir="儲存檔案路徑"

接着就是處理上傳的檔案了。

上傳檔案的時候,nodejs預設會将上傳的檔案進行md5加密進而變成MD5名字格式的檔案,并且連着擴充名也沒了。

是以,我們可以将上傳的檔案進行重新命名并且加上上傳檔案的字尾名。

form.parse(req,(err,fields,files)=>{
        //報錯的時候直接抛出錯誤
        if(err){
            throw err;
        }
        //每當觸發事件的時候就産生一個随機數
        var ran=parseInt(Math.random()*89999+10000);
        //獲得上傳檔案的字尾名
        //path.extname獲得的是檔案從'.'開始到最後的擴充名(是最後一個.)
        var extname=path.extname(files.tupian.name);
        //獲得上傳檔案時的路徑
        const oldPath=__dirname+"/"+files.tupian.path;
        //獲得放到目的目錄的路徑
        const newPath=__dirname+"/uploads/"+ran+extname;
        //在上傳檔案成功之後,用rename參數進行修改檔案名
        //rename的參數有兩種使用方法,就是下方的樣子,參數為(oldPath,newPath,callback),另一中方法是(oldPath,newPath),即少了回掉函數
        fs.rename(oldPath,newPath,(err)=>{
            if(err){
                throw Error('改名失敗');
            }
        res.writeHead(200,{"Content-type":"text/plain"});
        res.end("success");
    })
})
           

繼續閱讀