Heim  >  Artikel  >  Web-Frontend  >  Wie NodeJS den Datei-Upload basierend auf Express implementiert

Wie NodeJS den Datei-Upload basierend auf Express implementiert

亚连
亚连Original
2018-05-25 17:29:412186Durchsuche

In diesem Artikel wird hauptsächlich die Methode von NodeJS zum Implementieren des Datei-Uploads basierend auf Express vorgestellt. Er analysiert die spezifischen Schritte und zugehörigen Betriebsfähigkeiten des NodeJS-basierten Express-Frameworks zum Implementieren der Datei-Upload-Funktion anhand des Beispiels it

Das Beispiel in diesem Artikel beschreibt, wie nodejs den Datei-Upload basierend auf Express implementiert. Ich teile es Ihnen als Referenz mit:

Als ich vor einiger Zeit an einem persönlichen Projekt arbeitete, habe ich den NodeJS-Server zum Hochladen von Dateien verwendet .

Wenn ich Dateien hochlade, verwende ich die Multiparty-Middleware von Express. Natürlich kann dies auch mit der Connect-Multiparty-Middleware implementiert werden, aber der Beamte scheint die Verwendung der Connect-Multiparty-Middleware nicht zu empfehlen. Schauen wir uns ohne weitere Umschweife den folgenden Code an.

Schritte:

(1) Verwenden Sie Express, um ein Projekt zu erstellen. Die Standardeinstellung ist die Jade-Template-Engine, aber ich bin immer noch an HTML gewöhnt, also habe ich sie geändert zur HTML-Vorlage.
(2) Installieren Sie im Projektverzeichnis die erforderlichen Komponenten über npm install multiparty.
(3) Ändern Sie „views/index.html“ und fügen Sie ein Datei-Upload-Formular hinzu.

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) Ändern Sie „routes/index.js“, um den Hintergrundcode für das Hochladen von Seiten und Antworten zu implementieren.

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;

Das Obige habe ich für Sie zusammengestellt. Ich hoffe, es wird Ihnen in Zukunft hilfreich sein.

Verwandte Artikel:

AngularJS-Tab-Bar-Implementierung und MVC-Small-Case (grafisches Tutorial)

React+Ajax+ Java-Implementierungen die Funktion, Bilder hochzuladen und in der Vorschau anzuzeigen (grafisches Tutorial)

So verwenden Sie ajax_Examples, Ajax-Datenverarbeitung

Das obige ist der detaillierte Inhalt vonWie NodeJS den Datei-Upload basierend auf Express implementiert. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn