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");
})
})