Maison > interface Web > js tutoriel > le corps du texte

Exemple de traitement de téléchargement de fichier node.js

高洛峰
Libérer: 2016-12-24 17:19:38
original
1384 Les gens l'ont consulté

Allons directement au sujet, sur la base du cadre de base du développement Web Node.js, nous allons créer une fonction de téléchargement de fichiers

Le gestionnaire de téléchargement est relativement simple et peut être trouvé en ligne

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 = &#39;<html>&#39;+
  &#39;<head>&#39;+
  &#39;<meta http-equiv="Content-Type" &#39;+
  &#39;content="text/html; charset=UTF-8" />&#39;+
  &#39;</head>&#39;+
  &#39;<body>&#39;+
  &#39;<form action="/fileuploadaction" method="post" enctype="multipart/form-data">&#39;+
  &#39;<input name="name" type="text" />&#39;+
  &#39;<input name="upload" type="file" />&#39;+
  &#39;<input type="submit" value="Upload" />&#39;+
  &#39;</form>&#39;+
  &#39;</body>&#39;+
  &#39;</html>&#39;;
 response.write(body);
 response.end();
}
 
<span style="color: rgb(255, 0, 0);">function fileUploadAction(request,response){
 var fs=require(&#39;fs&#39;);
 var formidable=require(&#39;formidable&#39;);
 var baseUploadPath="./media/upload/";
 var form=new formidable.IncomingForm();
 form.uploadDir=&#39;./var/tmp&#39;;
 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,{&#39;Content-Type&#39;:&#39;text/html&#39;});//值得注意的是这里的response.writeHead()函数内容要写在form.parse()的callback中要不不会显示
   response.write(&#39;received image:</br>&#39;);
   response.write(&#39;<img src="/showuploadimage?name=&#39;+files.upload.name+&#39;" />&#39;);
   response.end();
  }
 });
}</span>
 
function showUploadImage(request,response){
 var fs=require(&#39;fs&#39;);
 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;
Copier après la connexion

En même temps, ajoutez

handle[&#39;/fileuploadform&#39;]=handlers.fileuploadform;
handle[&#39;/fileuploadaction&#39;]=handlers.fileuploadaction;
handle[&#39;/showuploadimage&#39;]=handlers.showuploadimage;
Copier après la connexion

à index.js

Une chose à noter est que lorsque vous devez traiter les téléchargements de fichiers, vous ne pouvez pas télécharger de fichiers sur le serveur. Ajoutez du contenu

request.setEncoding(&#39;utf8&#39;);//设置这个很可能导致上传失败,这是formidable模块的一个bug吧
Copier après la connexion

et

request.addListener("data",function(tempPostData){
   postData+=tempPostData;
  });
  request.addListener("end",function(){
   route(request,response,postData,handle);
  });
Copier après la connexion

, j'espère que ce sera le cas. sera utile à l'apprentissage de chacun, et j'espère également que tout le monde soutiendra le site Web PHP en chinois.

Pour plus d'exemples de traitement de téléchargement de fichiers node.js et d'articles connexes, veuillez faire attention au site Web PHP chinois !


Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!