Baseline Widely available
XMLHttpRequestUpload
ã¤ã³ã¿ã¼ãã§ã¤ã¹ã¯ãç¹å®ã®XMLHttpRequest
ã®ã¢ãããã¼ãå¦çã表ãã¾ãããã㯠opaque ãªãã¸ã§ã¯ãã§ãåºç¤ã§ãããã©ã¦ã¶ã¼ä¾åã®ã¢ãããã¼ãå¦çã表ãã¾ããããã¯XMLHttpRequestEventTarget
ã§ãããXMLHttpRequest.upload
ãå¼ã³åºããã¨ã§åå¾ã§ãã¾ãã
ã¡ã¢: ãã®æ©è½ã¯ã¦ã§ãã¯ã¼ã«ã¼å ã§å©ç¨å¯è½ã§ãã
EventTarget XMLHttpRequestEventTarget XMLHttpRequestUpload ã¤ã³ã¹ã¿ã³ã¹ããããã£ãã®ã¤ã³ã¿ã¼ãã§ã¤ã¹ã«ç¹æã®ããããã£ã¯ããã¾ãããã XMLHttpRequestEventTarget
ããã³ EventTarget
ããç¶æ¿ããããããã£ãããã¾ãã
ãã®ã¤ã³ã¿ã¼ãã§ã¤ã¹ã«ç¹æã®ã¡ã½ããã¯ããã¾ãããã XMLHttpRequestEventTarget
ããã³ EventTarget
ããç¶æ¿ããã¡ã½ãããããã¾ãã
abort
ãªã¯ã¨ã¹ãã䏿¢ãããå ´åã«ãä¾ãã°ããã°ã©ã ã XMLHttpRequest.abort()
ãå¼ã³åºããããã«çºè¡ããã¾ãã onabort
ã¤ãã³ããã³ãã©ã¼ããããã£ã§ãå©ç¨ã§ãã¾ãã
error
ãªã¯ã¨ã¹ããã¨ã©ã¼ã«ééããã¨ãã«çºè¡ããã¾ãã onerror
ã¤ãã³ããã³ãã©ã¼ããããã£ã§ãå©ç¨ã§ãã¾ãã
load
ãªã¯ã¨ã¹ããã©ã³ã¶ã¯ã·ã§ã³ãæåè£ã«å®äºããã¨ãã«çºè¡ããã¾ãã onload
ã¤ãã³ããã³ãã©ã¼ããããã£ã§ãå©ç¨ã§ãã¾ãã
loadend
ãªã¯ã¨ã¹ããæåããå ´åï¼load
ã®å¾ï¼ã¾ãã¯å¤±æããå ´åï¼abort
ã¾ã㯠error
ã®å¾ï¼ã«çºè¡ããã¾ãã onloadend
ã¤ãã³ããã³ãã©ã¼ããããã£ã§ãå©ç¨ã§ãã¾ãã
loadstart
ãªã¯ã¨ã¹ãããã¼ã¿ã®èªã¿è¾¼ã¿ãéå§ããã¨ãã«çºè¡ããã¾ãã onloadstart
ã¤ãã³ããã³ãã©ã¼ããããã£ã§ãå©ç¨ã§ãã¾ãã
progress
ãªã¯ã¨ã¹ããããå¤ãã®ãã¼ã¿ãåãåã£ãã¨ãã«å®æçã«çºè¡ããã¾ãã onprogress
ã¤ãã³ããã³ãã©ã¼ããããã£ã§ãå©ç¨ã§ãã¾ãã
timeout
ãããããè¨å®ãããæéãçµéããé²è¡ãçµäºããã¨ãã«çºè¡ããã¾ãã ontimeout
ã¤ãã³ããã³ãã©ã¼ããããã£ã§ãå©ç¨ã§ãã¾ãã
ã¢ãããã¼ãä¸ã¯é²æãã¼ã表示ãããé²æç¶æ³ãæåã»å¤±æã®ã¡ãã»ã¼ã¸ã表示ããã¾ãã䏿¢ãã¿ã³ã§ã¢ãããã¼ãã䏿¢ã§ãã¾ãã
HTML<!doctype html>
<html lang="ja">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width" />
<title>XMLHttpRequestUpload ã®ãã¹ã</title>
<link rel="stylesheet" href="xhrupload_test.css" />
<script src="xhrupload_test.js"></script>
</head>
<body>
<main>
<h1>ãã¡ã¤ã«ã®ã¢ãããã¼ã</h1>
<p>
<label for="file">ã¢ãããã¼ããããã¡ã¤ã«</label>
<input type="file" id="file" />
</p>
<p>
<progress />
</p>
<p>
<output></output>
</p>
<p>
<button disabled id="abort">䏿¢</button>
</p>
</main>
</body>
</html>
CSS
body {
background-color: lightblue;
}
main {
margin: 50px auto;
text-align: center;
}
#file {
display: none;
}
label[for="file"] {
background-color: lightgrey;
padding: 10px 10px;
}
progress {
display: none;
}
progress.visible {
display: inline;
}
JavaScript
addEventListener("DOMContentLoaded", () => {
const fileInput = document.getElementById("file");
const progressBar = document.querySelector("progress");
const log = document.querySelector("output");
const abortButton = document.getElementById("abort");
fileInput.addEventListener("change", () => {
const xhr = new XMLHttpRequest();
xhr.timeout = 2000; // 2 ç§
// ãªã³ã¯ä¸æ¢ãã¿ã³
abortButton.addEventListener(
"click",
() => {
xhr.abort();
},
{ once: true },
);
// ã¢ãããã¼ããéå§ããæã«ã鲿ãã¼ã表示ãã
xhr.upload.addEventListener("loadstart", (event) => {
progressBar.classList.add("visible");
progressBar.value = 0;
progressBar.max = event.total;
log.textContent = "Uploading (0%)â¦";
abortButton.disabled = false;
});
// 鲿ã¤ãã³ããåä¿¡ãããã³ã«ããã¼ãæ´æ°ãã
xhr.upload.addEventListener("progress", (event) => {
progressBar.value = event.loaded;
log.textContent = `Uploading (${(
(event.loaded / event.total) *
100
).toFixed(2)}%)â¦`;
});
// ã¢ãããã¼ããå®äºããããããã°ã¬ã¹ãã¼ãé表示ã«ãã
xhr.upload.addEventListener("loadend", (event) => {
progressBar.classList.remove("visible");
if (event.loaded !== 0) {
log.textContent = "Upload finished.";
}
abortButton.disabled = true;
});
// ã¨ã©ã¼ã䏿¢ãã¿ã¤ã ã¢ã¦ãã®å ´åãããã°ã¬ã¹ãã¼ãé表示ã«ãã
// ãããã®ã¤ãã³ã㯠xhr ãªãã¸ã§ã¯ãã§ãå¾
ã¡åããããã¨ãã§ãããã¨ã«æ³¨æ
function errorAction(event) {
progressBar.classList.remove("visible");
log.textContent = `Upload failed: ${event.type}`;
}
xhr.upload.addEventListener("error", errorAction);
xhr.upload.addEventListener("abort", errorAction);
xhr.upload.addEventListener("timeout", errorAction);
// æ¬ä½ãæ§ç¯
const fileData = new FormData();
fileData.append("file", fileInput.files[0]);
// çè«çã«ã¯ã open() å¼ã³åºãã®å¾ã«ã¤ãã³ããªã¹ãã¼ãè¨å®ãããã¨ãã§ãã¾ããã
// ãã©ã¦ã¶ã¼ã¯ãã®é¨åã«ãã°ããããã¡
xhr.open("POST", "upload_test.php", true);
// ã¤ãã³ããªã¹ãã¼ã¯éä¿¡ããåã«è¨å®ããªããã°ãªããªããã¨ã«æ³¨æãã¦ãã ããï¼ããªãã©ã¤ããªã¯ã¨ã¹ãã§ããããï¼ã
xhr.send(fileData);
});
});
仿§æ¸ ãã©ã¦ã¶ã¼ã®äºææ§ é¢é£æ
å ±
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4