node.js文件上傳處理示例
直入主題,在Node.js web 開發(fā)基本框架的前提下,我們來做一個(gè)文件上傳功能
上傳的handler比較簡單,網(wǎng)上都能找到
var url=require('url'); var exec=require('child_process').exec; var querystring=require('querystring'); /********************************文件上傳 第3方模塊測試*************************/ function fileUploadForm(request,response){ response.writeHead(200,{'Content-Type':'text/html'}); var body = '<html>'+ '<head>'+ '<meta http-equiv="Content-Type" '+ 'content="text/html; charset=UTF-8" />'+ '</head>'+ '<body>'+ '<form action="/fileuploadaction" method="post" enctype="multipart/form-data">'+ '<input name="name" type="text" />'+ '<input name="upload" type="file" />'+ '<input type="submit" value="Upload" />'+ '</form>'+ '</body>'+ '</html>'; response.write(body); response.end(); } <span style="color: rgb(255, 0, 0);">function fileUploadAction(request,response){ var fs=require('fs'); var formidable=require('formidable'); var baseUploadPath="./media/upload/"; var form=new formidable.IncomingForm(); form.uploadDir='./var/tmp'; form.parse(request,function(error,fields,files){ if(!error){ console.log(fields); var desUploadName=baseUploadPath+files.upload.name; fs.renameSync(files.upload.path, desUploadName); response.writeHead(200,{'Content-Type':'text/html'});//值得注意的是這里的response.writeHead()函數(shù)內(nèi)容要寫在form.parse()的callback中要不不會顯示 response.write('received image:</br>'); response.write('<img src="/showuploadimage?name='+files.upload.name+'" />'); response.end(); } }); }</span> function showUploadImage(request,response){ var fs=require('fs'); var imageName=querystring.parse(url.parse(request.url).query); var baseUploadPath="./media/upload/"; fs.readFile(baseUploadPath+imageName.name, "binary", function(error, file) { if(error) { response.writeHead(500, {"Content-Type": "text/plain"}); response.write(error + "\n"); response.end(); } else { response.writeHead(200, {"Content-Type": "image/png"}); response.write(file, "binary"); response.end(); } }); } exports.fileuploadform=fileUploadForm; exports.fileuploadaction=fileUploadAction; exports.showuploadimage=showUploadImage;
同時(shí)在index.js中添加
handle['/fileuploadform']=handlers.fileuploadform; handle['/fileuploadaction']=handlers.fileuploadaction; handle['/showuploadimage']=handlers.showuploadimage;
有一點(diǎn)需要注意的是,在有需要處理文件上傳的時(shí)候,不能在server中添加
request.setEncoding('utf8');//設(shè)置這個(gè)很可能導(dǎo)致上傳失敗,這是formidable模塊的一個(gè)bug吧
和
request.addListener("data",function(tempPostData){ postData+=tempPostData; }); request.addListener("end",function(){ route(request,response,postData,handle); });
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- node.js使用express框架進(jìn)行文件上傳詳解
- 又拍云 Node.js 實(shí)現(xiàn)文件上傳、刪除功能
- Node.js上傳文件功能之服務(wù)端如何獲取文件上傳進(jìn)度
- node.js文件上傳重命名以及移動位置的示例代碼
- Node.js實(shí)現(xiàn)文件上傳的示例
- Node.js開發(fā)教程之基于OnceIO框架實(shí)現(xiàn)文件上傳和驗(yàn)證功能
- Node.js實(shí)現(xiàn)兼容IE789的文件上傳進(jìn)度條
- Node.js實(shí)現(xiàn)文件上傳
- Node.js模擬瀏覽器文件上傳示例
- node.js實(shí)現(xiàn)帶進(jìn)度條的多文件上傳
相關(guān)文章
nodejs Assert中equal(),strictEqual(),deepEqual(),strictDeepEq
這篇文章主要介紹了node項(xiàng)目中遇到使用斷言測試程序,看了下nodejs的api之后,對nodejs中assert斷言的幾個(gè)方法做個(gè)簡單的記錄,需要的朋友可以參考下2017-09-09Node.js基礎(chǔ)入門之模塊與npm包管理器使用詳解
Node.js是一個(gè)基于Chrome?V8引擎的JavaScript運(yùn)行時(shí)。類似于Java中的JRE,.Net中的CLR。本文將詳細(xì)為大家介紹Node.js中的模塊與npm包管理器的使用,需要的可以參考一下2022-03-03Node.js、Socket.IO和GPT-4構(gòu)建AI聊天機(jī)器人的項(xiàng)目實(shí)踐
本文主要介紹了Node.js、Socket.IO和GPT-4構(gòu)建AI聊天機(jī)器人的項(xiàng)目實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-05-05nodejs爬蟲抓取數(shù)據(jù)亂碼問題總結(jié)
這篇文章主要給大家總結(jié)了下nodejs爬蟲抓取數(shù)據(jù)亂碼問題的相關(guān)資料,需要的朋友可以參考下2015-07-07Node.js中的模塊機(jī)制學(xué)習(xí)筆記
這篇文章主要介紹了Node.js中的模塊機(jī)制學(xué)習(xí)筆記,本文講解了CommonJS模塊規(guī)范、Node模塊實(shí)現(xiàn)過程、模塊調(diào)用棧、包與NPM等內(nèi)容,需要的朋友可以參考下2014-11-11