首页 > 解决方案 > 如何使用 express.js 将文件传递到我的服务器

问题描述

我有一个服务器(index.js)和一个包含表单的 HTML 文件(form.html)。表单接受文本输入和图像输入。一旦用户按下表单上的按钮,数据将使用 POST 发送到服务器(index.js)。我能够将数据发送到服务器,但没有发送图像文件。它变成空的。在网上搜索后,我发现问题可能是由于标题(链接),但我不知道如何添加超过 2 种类型的“Content-Type”。

index.js

app.post("/service-user-add-pet", function (req, res) {
  console.log("receiving data from client: ");
  console.log(req.body); // outputs: {petName:'randomname', petImageUrl:{},}
});

表单.js

$("#addPet_updateBtn").click((event) => {
  console.log("update button clicked");
  const data = {
    petName: $("#petName").val(),
    petImageUrl: petImage[0],
  };
  console.log(data); // outputs: {petName:'randomname', petImageUrl:{File},}
  sendToServer(data, "/service-user-add-pet").then((res) => {
    if (res.status == "success") {
      alert("Pet added successfully");
    } 
  });
});

async function sendToServer(data, url) {
  const options = {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
    },
    body: JSON.stringify(data),
  };
  const res = await fetch(url, options);
  return await res.json();
}

这就是我得到的方式petImage[0]

 ...
 ...
 reader = new FileReader();
 reader.onload = function () {
 reader.readAsDataURL(petImage[0]);

标签: javascriptnode.jsexpress

解决方案


推荐阅读