readFileAs*
پوششهای پرامیسدار دور FileReader.
| تابع | با چه چیزی حل میشود | کاربرد |
|---|---|---|
readFileAsArrayBuffer(blob) |
ArrayBuffer |
پردازش دودویی |
readFileAsUint8Array(blob) |
Uint8Array |
خوراک checkEncoding / arrayBufferToString |
readFileAsText(blob, encoding?) |
string |
فایلهای متنی؛ اگر رمزگذاری ناشناخته است اول تشخیصش دهید |
readFileAsDataURL(blob) |
string |
پیشنمایش تصویر |
نمونه
import { readFileAsUint8Array, arrayBufferToString } from 'ranuts';
input.addEventListener('change', async (e) => {
const bytes = await readFileAsUint8Array(e.target.files[0]);
const text = arrayBufferToString(bytes); // رمزگذاری خودکار تشخیص داده میشود، از جمله GBK/Big5
});یادداشتها
- هر سه خروجی سیمکشی شدهاند:
onload،onerrorوonabort. فراموشکردنonabortهمان راه کلاسیک است که وقتی کاربر انتخابگر فایل را لغو میکند، یک پرامیس را تا ابد در انتظار میگذارد. - با خطایی روشن reject میکند جایی که
FileReaderوجود ندارد (Node و برخی بسترهای ورکر). - هرگز روی فایلی با منشأ ناشناخته
new TextDecoder().decode()نزنید: این کار UTF-8 را فرض میگیرد و GBK/Big5 را به هم میریزد. ازarrayBufferToStringاستفاده کنید که اول تشخیص میدهد.