new Request()
কনস্ট্রাক্টরকে ব্যবহার করে তারপরে Request.bodyUsed
Boolean
অ্যাট্রিবিউটটি পরীক্ষা করা সম্ভব সম্ভাব্য কাজ হতে পারে
bodyUsed
অ্যাট্রিবিউট এর সংগ্রহকারী যদি সত্যি ফিরে আসবে disturbed
অন্যথায়, এবং মিথ্যা।
স্ট্রিম কিনা তা নির্ধারণ করা distributed
Body
মিক্সিন প্রয়োগকারী একটি বস্তু বলা হয় disturbed
যদি
body
এটি নন এবং নল stream
হয় disturbed
।
সমান হলে এর পুনরাবৃত্ত কলটিতে শৃঙ্খলযুক্ত fetch()
Promise
থেকে ফিরে আসুন ।.then()
.read()
ReadableStream
Request.bodyUsed
true
দ্রষ্টব্য, Request.body
বাইটগুলি শেষ বিন্দুতে প্রবাহিত হওয়ায় পদ্ধতির বাইটগুলি পড়া হয় না । এছাড়াও, ব্রাউজারে কোনও প্রতিক্রিয়া পূর্ণরূপে ফেরার আগে আপলোডটি ভালভাবে সম্পূর্ণ হতে পারে।
const [input, progress, label] = [
document.querySelector("input")
, document.querySelector("progress")
, document.querySelector("label")
];
const url = "/path/to/server/";
input.onmousedown = () => {
label.innerHTML = "";
progress.value = "0"
};
input.onchange = (event) => {
const file = event.target.files[0];
const filename = file.name;
progress.max = file.size;
const request = new Request(url, {
method: "POST",
body: file,
cache: "no-store"
});
const upload = settings => fetch(settings);
const uploadProgress = new ReadableStream({
start(controller) {
console.log("starting upload, request.bodyUsed:", request.bodyUsed);
controller.enqueue(request.bodyUsed);
},
pull(controller) {
if (request.bodyUsed) {
controller.close();
}
controller.enqueue(request.bodyUsed);
console.log("pull, request.bodyUsed:", request.bodyUsed);
},
cancel(reason) {
console.log(reason);
}
});
const [fileUpload, reader] = [
upload(request)
.catch(e => {
reader.cancel();
throw e
})
, uploadProgress.getReader()
];
const processUploadRequest = ({value, done}) => {
if (value || done) {
console.log("upload complete, request.bodyUsed:", request.bodyUsed);
return reader.closed.then(() => fileUpload);
}
console.log("upload progress:", value);
progress.value = +progress.value + 1;
return reader.read().then(result => processUploadRequest(result));
};
reader.read().then(({value, done}) => processUploadRequest({value,done}))
.then(response => response.text())
.then(text => {
console.log("response:", text);
progress.value = progress.max;
input.value = "";
})
.catch(err => console.log("upload error:", err));
}