Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 | 5x 2x 2x 2x 2x 2x 2x 5x 1x 1x 1x 5x 2x 2x 2x 2x 2x 2x 5x 1x 1x 5x 1x 1x 1x 1x 1x 1x 5x | /** * 各种内容类型的读取器。 * * @public */ export interface ReadFileReader { /** * 读取并返回文本内容。 */ text(): Promise<string> /** * 读取并返回 JSON 内容。 */ json<T>(): Promise<T> /** * 读取并返回 dataURL 内容。 */ dataUrl(): Promise<string> /** * 读取并返回 base64 内容。 */ base64(): Promise<string> /** * 读取并返回 ArrayBuffer 内容。 */ arrayBuffer(): Promise<ArrayBuffer> } /** * 读取给定文件的内容。 * * @public * @param file 要读取的文件 * @returns 返回各种内容类型的读取器 * @example * ```typescript * const file = new File(['{"x":1}'], 'x.json') * const reader = readFile(file) * console.log(await reader.text()) // => '{"x":1}' * console.log(await reader.json()) // => {x: 1} * ``` */ export function readFile(file: File): ReadFileReader { const text: ReadFileReader['text'] = () => { return new Promise((resolve, reject) => { const fileReader = new FileReader() fileReader.onload = () => { resolve(fileReader.result as string) } fileReader.onerror = () => { reject(fileReader.error) } fileReader.readAsText(file) }) } const json: ReadFileReader['json'] = () => { return text().then(data => { try { return JSON.parse(data) } catch (err) { return Promise.reject(err) } }) } const dataUrl: ReadFileReader['dataUrl'] = () => { return new Promise((resolve, reject) => { const fileReader = new FileReader() fileReader.onload = () => { resolve(fileReader.result as string) } fileReader.onerror = () => { reject(fileReader.error) } fileReader.readAsDataURL(file) }) } const base64: ReadFileReader['base64'] = () => { return dataUrl().then(url => { return url.split(';base64,')[1] }) } const arrayBuffer: ReadFileReader['arrayBuffer'] = () => { return new Promise((resolve, reject) => { const fileReader = new FileReader() fileReader.onload = () => { resolve(fileReader.result as ArrayBuffer) } fileReader.onerror = () => { reject(fileReader.error) } fileReader.readAsArrayBuffer(file) }) } return { text, json, dataUrl, base64, arrayBuffer } } |