Загрузка файлов на android работает только при использовании android инструментов chrome dev? - PullRequest
0 голосов
/ 29 мая 2020

Я хотел поделиться чем-то интересным и, надеюсь, получить объяснение этого поведения. Это так. Я создал страницу, и все, что она делает, это загружает файл на сервер.

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");
    }
  );
});

На p c работает нормально. Из любопытства я хотел протестировать это на своем устройстве android. Мой p c подключен к мобильной точке доступа, а я go cmd> ipconfig, чтобы получить IP-адрес. Теперь я захожу на страницу своего телефона, и когда я нажимаю кнопку «Загрузить», ничего не происходит, файл не добавляется в папку на сервере. Я думаю, что, возможно, прослушиватель событий onclick не работает на android, поэтому я тестирую его, удаляя HTTP-запрос и меняя цвет фона при нажатии. Оно работает. Я решил использовать отладку по USB, чтобы получить доступ к chrome инструментам разработчика на android. А затем я пытаюсь загрузить снова.

enter image description here

На этот раз все работает!
Думаю, может это как-то связано с тем, что телефон сейчас подключается к p c по usb. Я выхожу из инструментов android chrome dev и снова пытаюсь загрузить через USB-соединение. Опять же, НЕ работает, файл не добавлен в папку на сервере.
Кто-нибудь знает, почему ТОЛЬКО при использовании android инструментов разработки работает?

...