0

我想分享一些我觉得有趣的东西,并希望能得到对这种行为的解释。它是这样的。我创建了一个页面,它所做的只是将文件上传到服务器。

const input = document.getElementById("input");
const button = document.getElementById("button");

button.addEventListener("click", () => {
  const file = input.files[0];

  const xhr = new XMLHttpRequest();
  xhr.open("POST", "http://localhost:4000");

  const formData = new FormData();
  formData.append(input.id, file);

  xhr.onload = () => {
    console.log(xhr.response);
  };
  xhr.send(formData);
});

服务器

const http = require("http");
const express = require("express");
const app = express();
const upload = require("express-fileupload");
const cors = require("cors");
const fs = require("fs");

app.use(cors());
app.use(upload());

const server = http.createServer(app).listen(4000);

app.use("/", express.static(__dirname + "/client"));

app.post("/", (req, res) => {

  fs.appendFile("./uploads/" + req.files.input.name, req.files.input.data,
    () => {
      res.send("file uploaded");
    }
  );
});

在电脑上它工作得很好。出于好奇,我想在我的安卓设备上进行测试。我的电脑连接到移动热点,我去 cmd>ipconfig 获取 IP 地址。现在我在手机上进入页面,当我按下上传时没有任何反应,文件未添加到服务器上的文件夹中。我想也许 onclick 事件侦听器在 android 上不起作用,所以我通过删除 http 请求并在按下时更改背景颜色来测试它。有用。我决定使用 USB 调试,这样我就可以在 android 上使用 chrome 开发工具。然后我尝试再次上传。

在此处输入图像描述

这次成功了!
我认为这可能与现在通过 USB 连接到 PC 的手机有关。我退出 android chrome 开发工具并尝试使用 USB 连接再次上传。再次它不起作用文件未添加到服务器上的文件夹中。
有谁知道为什么只有在使用 android 开发工具时才能这样做?

4

0 回答 0