以下 JavaScript 代码将文件分块发送到嵌入式 LWIP HTTP 服务器。
从Wireshark跟踪中可以看出,传输过程中有时会发生重置。在这种情况下,请求将被中止,但是脚本不会从中接收任何信息,并且即使出现错误也会返回
true
。
有人有关于如何教脚本识别此类错误的提示吗?
如果请求成功,该函数应该只返回
true
,否则调用将使用相同的块再次重复。
async function uploadChunk(chunk) {
let result = false;
const formData = new FormData();
formData.append("file", chunk);
sleep(10);
try {
const response = await fetch("http://" + target_ip + "/update", {
method: "POST",
mode: "no-cors",
body: formData
});
res = await response;
const ok_string = "OK";
result = (response.ok & (response.statusText === ok_string));
console.log(res);
} catch (error) {
console.error("Failed to upload chunk: ", error);
}
return result;
}
您不需要使用
try
和 catch
。只需听 response.status
并在 result
时将变量 status == 200
设置为 true。
async uploadChunk(chunk) {
let result = false;
const formData = new FormData();
formData.append("file", chunk);
sleep(10);
let response = {};
response = await fetch(url, {
method: "POST",
mode: "no-cors",
body: formData
});
if(response.status == 200) {
result = true;
}
return result;
}