deno - 如何提供图像

dtp*_*atp 5 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 });
}
Run Code Online (Sandbox Code Playgroud)

Mar*_*nde 4

您使用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 });
}
Run Code Online (Sandbox Code Playgroud)

Deno.readFile也适用于文本文件。