我想分享一些我觉得有趣的东西,并希望能得到对这种行为的解释。它是这样的。我创建了一个页面,它所做的只是将文件上传到服务器。
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 开发工具时才能这样做?