javascript - deno - 如何提供图像
问题描述
我想在 deno 中提供图像。我正在使用以下代码(简化为更易于阅读)。如果我在文本文件上尝试并将内容类型设置为文本/纯文本,它工作得非常好。如果我用图像尝试它,它确实会发送文件的内容,但由于某种原因,浏览器会告诉我文件包含错误。任何想法为什么会这样?(我对 deno 完全陌生,所以这可能非常明显。)
import { serve } from "https://deno.land/std/http/server.ts";
import { readFileStr } from 'https://deno.land/std/fs/read_file_str.ts';
for await (const req of serve({ port: 80 })) {
const img = await readFileStr('./myfolder/cat.png');
const head = new Headers();
head.set('content-type', 'image/png');
req.respond({ headers: head, body: img, status: 200 });
}
解决方案
您使用readFileStr
的应该只用于文本文件,因为内容被转换为UTF-8
字符串。要处理二进制文件,例如图像,您需要使用Deno.readFile
for await (const req of serve({ port: 80 })) {
const img = await Deno.readFile('./myfolder/cat.png');
const head = new Headers();
head.set('content-type', 'image/png');
req.respond({ headers: head, body: img, status: 200 });
}
Deno.readFile
也适用于文本文件。
推荐阅读
- apache-commons - BeanUtils filter Set 基于对象属性和值比较
- amazon-web-services - 循环遍历 S3 存储桶列表和 put-bucket-lifecycle-configuration
- javascript - Typescript 给我变量错误,并且还在编译 javascript 不知道的代码
- ios - SQLitt.Swift unregonized token 从 Swift 3.0 到 Swift 4.2 的转换错误
- reactjs - 为什么当我从 React 应用程序调用 api 时缺少“www-authenticate”标头?
- c++ - boost::filesystem::current_path() 仅在原生 Android 中返回“/”
- php - 如何将数据保存在同一行中?
- python - 如何在 QComboBox 中制作 addItem 函数以在第一个 positionfist 中添加最后一个 Item
- apache-kafka - 使用多个输入主题时,输入主题的不同消息率会影响kafka流处理速度吗?
- php - 可捕获的致命错误:无法将类 DateTime 的对象转换为第 364 行中的字符串