Node.js 部落格執行個體(三)添加檔案上傳功能

來源:互聯網
上載者:User

標籤:head   else   text   gravity   pre   post   檔案的   path   nod   

原教程https://github.com/nswbmw/N-blog/wiki/_pages的第三章

上傳檔案眼下有三種方法:
使用 Express 內建的檔案上傳功能,不涉及資料庫
使用 Formidable 外部模組,不涉及資料庫
上傳到 MongoDB ,涉及資料庫

這裡使用第一種,使用者將檔案上,儲存於:blog/public/images/檔案夾下。

blog/views/header.ejs  在<span><a title="發表" href="/post">post</a</span>前加入一行:

<span><a title="上傳" href="/upload">upload</a</span>
index.js加入代碼:

fs=require(‘fs‘),
以及:

<span style="white-space:pre"></span>app.get(‘/upload‘,checkLogin);app.get(‘/upload‘,function(req,res){res.render(‘upload‘,{title:‘檔案上傳‘,user:req.session.user,success:req.flash(‘success‘).toString(),error:req.flash(‘error‘).toString()});});app.post(‘/upload‘,checkLogin);app.post(‘/upload‘,function(req,res){for(var i in req.files){if(req.files[i].size==0){//使用同步方式刪除一個檔案fs.unlinkSync(req.files[i].path);console.log("successfully removed an empty file");}else{var target_path=‘./blog/public/images/‘+req.files[i].name;//使用同步方式重新命名一個檔案fs.renameSync(req.files[i].path,target_path);console.log(‘successfully rename a file‘);}}req.flash(‘success‘,‘檔案上傳成功‘);res.redirect(‘/upload‘);});
blog/views/下建立upload.ejs:

<%- include header %><form method=‘post‘ action=‘/upload‘ enctype=‘multipart/form-data‘ >  <input type="file" name="file1" multiple="multiple" /><br>  <input type="file" name="file2" multiple="multiple" /><br>  <input type="file" name="file3" multiple="multiple" /><br>  <input type="file" name="file4" multiple="multiple" /><br>  <input type="file" name="file5" multiple="multiple" /><br>  <input type="submit" /></form><%- include footer %>
blog/app.js中app.use(express.bodyParser());改為:

//保留上傳檔案的尾碼名,並把上傳檔案夾設定為 /public/images app.use(express.bodyParser({ keepExtensions: true, uploadDir: ‘./blog/public/images‘ }));
此時我們上傳一張圖片:123.png


提交:


發表部落格,在部落格裡引用照片:


發表:


Node.js 部落格執行個體(三)添加檔案上傳功能

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.