deno - 如何使用 Deno fetch API 将文件发布到服务器/或将文件转换为 RedableStream?
问题描述
如何将文件转换为可读流?我正在尝试使用 deno 的 fetch api 来执行此操作,这需要一个可读流作为主体才能将某些内容放在服务器上。我无法弄清楚如何将文件转换为 ReadableStream ?
解决方案
目前还没有一种内置的方法可以将 a 转换Reader
为 a ReadableStream
。
您可以使用以下代码对其进行转换:
const file = await Deno.open("./some-file.txt", { read: true });
const stream = new ReadableStream({
async pull(controller) {
try {
const b = new Uint8Array(1024 * 32);
const result = await file.read(b);
if (result === null) {
controller.close();
return file.close();
}
controller.enqueue(b.subarray(0, result));
} catch (e) {
controller.error(e);
controller.close();
file.close();
}
},
cancel() {
// When reader.cancel() is called
file.close();
},
});
// ReadableStream implements asyncIterator
for await (const chunk of stream) {
console.log(chunk);
}
请记住,Deno (1.0.5)fetch
还不支持ReadableStream
as 请求正文。
因此,目前要发布文件,您需要缓冲内容。
const body = await Deno.readAll(file);
await fetch('http://example.com', { method: 'POST', body });
推荐阅读
- .net - 为 Google 实现 dotnet core Identity Provider 服务器
- javascript - Java脚本过滤对象数组并将结果的一个元素推送到另一个数组
- wpf - 意外的自动网格列宽
- php - 如何在 php artisan make:model 命令中使用 Jenssegers\Mongodb\Eloquent\Model 而不是 Illuminate\Database\Eloquent\Model
- jenkins - 詹金斯管道传递变量
- java - 如何选择是同步对象还是方法
- python - Python Webscraping - BeautifulSoup 属性错误
- sql - Perl - 不要发送双重 sql 请求
- java - 如何从 DatePickerDialog 中获取月份和年份?
- excel - Excel VBA - 未存储列表框值