概述FSA 的 `createWritable` 提供可写流能力。本文展示分块写入、进度回调与取消控制。分块写入与取消const supportsFSA = typeof window.showSaveFilePicker === 'function'; async function saveStream(name, file, size = 1024 * 1024, onProgress, signal) { if (!supportsFSA) throw new Error('FSA unsupported'); const handle = await window.showSaveFilePicker({ suggestedName: name }); const ws = await handle.createWritable(); let o = 0, sent = 0; while (o < file.size) { if (signal && signal.aborted) { await ws.close(); throw new DOMException('aborted','AbortError'); } const b = file.slice(o, o + size); const ab = await b.arrayBuffer(); await ws.write(new Uint8Array(ab)); o += size; sent += b.size; onProgress && onProgress(sent); } await ws.close(); }

发表评论 取消回复