我在查看vibe-d-0.7.28的源代码,但是fileserver.d并没有显示任何有关这方面的信息。实际上,sendFileImpl()函数是该作业的主要实现,没有任何对字节范围头的引用。
你知道这是支持的还是如何工作的?

最佳答案

因为#1634这是可能的:

#!/usr/bin/env dub
/+ dub.sdl:
name "mini_vibed"
dependency "vibe-d" version="~>0.8.0-beta.4"
versions "VibeDefaultMain"
+/

import vibe.d;

shared static this()
{
    auto settings = new HTTPServerSettings;
    settings.port = 8080;

    auto router = new URLRouter;
    router.get("/full_file", (scope req, scope res) {
        auto inStream = openFile(__FILE_FULL_PATH__);
        res.bodyWriter.write(inStream);
    });
    router.get("/partial_file", serveStaticFile(__FILE_FULL_PATH__));
    router.get("*", (scope req, scope res) {
        res.writeBody("Please try /full_file or /partial_file");
    });

    listenHTTP(settings, router);
}

要么chmod +x文件,要么用dub --single运行它。
您可以使用curl进行测试:
curl --header "Range: bytes=0-200" localhost:8080/full_file
curl --header "Range: bytes=0-200" localhost:8080/partial_file

关于http - 有谁知道vibe.d在提供静态文件时是否支持HTTP字节范围?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38101237/

10-11 23:54