在 Express.js 中,由于其异步性质和网络处理方式,文件上传相对复杂一些。

我们可以通过使用中间件来处理多部分/form数据来实现文件上传。有许多可用的中间件,比如 multer、connect、body-parser 等。

下面通过一个示例来演示在 Node.js 中如何进行文件上传。在这里,我们将使用 'multer' 中间件。

首先创建一个名为 "jtp file upload" 的文件夹,并在其中包含以下文件:

1.jpg

uploads: 这是一个空文件夹,用于存储上传的图像。

package.json: 这是一个 JSON 文件,包含以下数据:

文件:package.json

{
  "name": "file_upload",
  "version": "0.0.1",
  "dependencies": {
    "express": "4.13.3",
    "multer": "1.1.0"
  },
  "devDependencies": {
    "should": "~7.1.0",
    "mocha": "~2.3.3",
    "supertest": "~1.1.0"
  }
}

文件:index.html

<!DOCTYPE html>
<html>
<head>
  <title>Node.js 文件上传</title>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
  <script src="http://cdnjs.cloudflare.com/ajax/libs/jquery.form/3.51/jquery.form.min.js"></script>
  <script>
    $(document).ready(function() {
      $('#uploadForm').submit(function() {
        $("#status").empty().text("文件正在上传中...");

        $(this).ajaxSubmit({
          error: function(xhr) {
            status('错误:' + xhr.status);
          },
          success: function(response) {
            console.log(response)
            $("#status").empty().text(response);
          }
        });

        return false;
      });   
    });
  </script>
</head>
<body>
  <h1>Express.js 文件上传</h1>
  <form id="uploadForm" enctype="multipart/form-data" action="/uploadjavatiku" method="post">
    <input type="file" name="myfile"/><br/><br/>
    <input type="submit" value="上传图像" name="submit"/><br/><br/>
    <span id="status"></span>
  </form>
</body>
</html>

文件:server.js

var express = require("express");
var multer = require('multer');
var app = express();

var storage = multer.diskStorage({
  destination: function (req, file, callback) {
    callback(null, './uploads');
  },
  filename: function (req, file, callback) {
    callback(null, file.originalname);
  }
});

var upload = multer({ storage: storage }).single('myfile');

app.get('/', function (req, res) {
  res.sendFile(__dirname + "/index.html");
});

app.post('/uploadjavatiku', function (req, res) {
  upload(req, res, function (err) {
    if (err) {
      return res.end("上传文件出错。");
    }
    res.end("文件上传成功!");
  });
});

app.listen(2000, function () {
  console.log("服务器正在运行,端口号为 2000");
});

要安装 package.json,执行以下命令:

npm install

这将在 "jtp file upload" 文件夹中创建一个名为 "node_modules" 的新文件夹。

依赖项已安装好。现在,运行服务器:

node server.js

在浏览器中打开 http://127.0.0.1:2000/,即可上传图像。

选择要上传的图像,然后点击 "上传图像" 按钮。

文件上传成功后,您可以在 "Uploads" 文件夹中找到已上传的文件。

标签: Nodejs, Nodejs安装教程, Nodejs教程, node, nodejs入门, nodejs入门教程, nodejs进阶, nodejs学习教程, nodejs开发, nodejs指南, nodejs学习指南, nodejs环境配置, nodejs框架