# Source code for scrapy.core.downloader.handlers.file

    from __future__ import annotations

    from pathlib import Path
    from typing import TYPE_CHECKING

    from w3lib.url import file_uri_to_path

    from scrapy.core.downloader.handlers.base import BaseDownloadHandler
    from scrapy.responsetypes import responsetypes
    from scrapy.utils.asyncio import run_in_thread

    if TYPE_CHECKING:
        from scrapy import Request
        from scrapy.http import Response

    class FileDownloadHandler(BaseDownloadHandler):
        async def download_request(self, request: Request) -> Response:
            filepath = file_uri_to_path(request.url)
            body = await run_in_thread(Path(filepath).read_bytes)
            respcls = responsetypes.from_args(filename=filepath, body=body)
            return respcls(url=request.url, body=body)