deno - 如何提供图像

deno - how to serve images

我想在 deno 中提供图像。我正在使用以下代码(经过简化以便于阅读)。如果我在文本文件上尝试它并将内容类型设置为 text/plain 它工作得很好。如果我用图像尝试它,它确实会发送文件的内容,但由于某种原因浏览器告诉我文件包含错误。知道这是为什么吗? (我是 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 也适用于文本文件。