Maison  >  Article  >  interface Web  >  Comment nodejs implémente le téléchargement de fichiers basé sur Express

Comment nodejs implémente le téléchargement de fichiers basé sur Express

亚连
亚连original
2018-05-25 17:29:412186parcourir

Cet article présente principalement la méthode de nodejs pour implémenter la fonction de téléchargement de fichiers basée sur express. Il analyse les étapes spécifiques et les compétences opérationnelles associées de nodejs basées sur le framework express pour implémenter la fonction de téléchargement de fichiers sur la base de l'exemple auquel les amis dans le besoin peuvent se référer. it

L'exemple de cet article décrit comment nodejs implémente le téléchargement de fichiers basé sur express. Je le partage avec vous pour votre référence. Les détails sont les suivants :

Lorsque je travaillais sur un projet personnel il y a quelque temps, j'ai utilisé le serveur nodejs pour télécharger des fichiers. .

Lorsque je télécharge des fichiers, j'utilise le multiparty d'Express. Bien sûr, il peut également être implémenté à l'aide du middleware connect-multiparty, mais le responsable ne semble pas recommander l'utilisation du middleware connect-multiparty. Sans plus tarder, regardons le code ci-dessous.

Étapes :

(1) Utilisez Express pour créer un projet. La valeur par défaut est le moteur de modèle Jade, mais je suis toujours habitué au HTML, donc je l'ai modifié. au modèle HTML.
(2) Dans le répertoire du projet, installez les composants nécessaires via npm install multiparty.
(3) Modifiez vues/index.html et ajoutez un formulaire de téléchargement de fichier.

index.html

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>上传文件</title>
</head>
<body>
  上传文件
  <form method=&#39;post&#39;, action=&#39;/file/uploading&#39;, enctype=&#39;multipart/form-data&#39;>
    <input type="file" name="inputFile">
    <input type="submit" value="上传">
  </form>
</body>
</html>

(4) Modifier routes/index.js pour implémenter le code d'arrière-plan pour le téléchargement de pages et le téléchargement de réponses .

var express = require(&#39;express&#39;);
var router = express.Router();
var multiparty = require(&#39;multiparty&#39;);
var util = require(&#39;util&#39;);
var fs = require(&#39;fs&#39;);
/* 上传页面. */
router.get(&#39;/&#39;, function(req, res, next) {
 //res.render(&#39;./views/index&#39;);
 res.sendfile(&#39;./views/index.html&#39;);
});
/* 上传 */
router.post(&#39;/file/uploading&#39;, function(req, res, next) {
  /* 生成multiparty对象,并配置上传目标路径 */
  var form = new multiparty.Form();
  /* 设置编辑 */
  form.encoding = &#39;utf-8&#39;;
  //设置文件存储路劲
  form.uploadDir = &#39;./public/files&#39;;
  //设置文件大小限制
  form.maxFilesSize = 2 * 1024 * 1024;
  // form.maxFields = 1000;  //设置所有文件的大小总和
  //上传后处理
  form.parse(req, function(err, fields, files) {
    var filesTemp = JSON.stringify(files, null, 2);
    if(err) {
      console.log(&#39;parse error:&#39; + err);
    }else {
      console.log(&#39;parse files:&#39; + filesTemp);
      var inputFile = files.inputFile[0];
      var uploadedPath = inputFile.path;
      var dstPath = &#39;./public/files&#39; + inputFile.originalFilename;
      //重命名为真实文件名
      fs.rename(uploadedPath, dstPath, function(err) {
        if(err) {
          console.log(&#39;rename error:&#39; + err);
        }else {
          console.log(&#39;rename ok&#39;);
        }
      })
    }
    res.writeHead(200, {&#39;content-type&#39;: &#39;text/plain;charset=utf-8&#39;});
    res.write(&#39;received upload:\n\n&#39;);
    res.end(util.inspect({fields: fields, files: filesTemp}))
  })
})
module.exports = router;

Ce qui précède est ce que j'ai compilé pour vous. J'espère qu'il vous sera utile à l'avenir.

Articles associés :

Implémentation de la barre d'onglets AngularJS et mvc small case (tutoriel graphique)

React+ajax+ Implémentations Java la fonction de téléchargement d'images et de prévisualisation de celles-ci (tutoriel graphique)

Comment utiliser ajax_Examples, traitement des données ajax

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
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