首页 > 解决方案 > 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 });
}

标签: javascriptdeno

解决方案


您使用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也适用于文本文件。


推荐阅读