相对于root的Javascript列表文件

时间:2019-04-13 08:00:31

标签: javascript html ecmascript-6 filepath

这是用于脱机应用程序。

html中,我们可以访问与html页面相关的文件。例如:

  • <script src="scripts/jquery-3.3.1.min.js"></script>
  • <link rel='stylesheet' href='styles/style.css'>
  • <img src='./images/file1.jpg'/>

如果/images目录中有很多图像,是否可以使用Javascript列出目录中的所有图像,还是我需要对图像名称进行硬编码?

我特别要求使用Javascript,而没有Node,直接从Chrome运行文件。

3 个答案:

答案 0 :(得分:0)

通常,客户端无权访问服务器的目录树。这意味着任何客户端javascript都将无法列出目录树。

如果不存在索引文件,但通常会皱眉,则可以配置apache以列出文件树。

如果您(反对我的建议)想要这样做,则可以配置apache列出文件,然后使用JavaScript提取文件列表。

更好的方法是使用服务器端代码(Node.js服务器,PHP等),该代码可以访问文件系统并提供文件列表。

仅本地应用程序

Javascript通常无权访问本地资源,并且在尝试获取常规资源时将抛出CORS错误。 (无论您是否已经在本地目录中,都会引发CORS错误。)这使得没有网络服务器几乎不可能做到这一点。

答案 1 :(得分:0)

尝试运行chrome.exe --allow-file-access-from-files

通过运行上面的命令行,它将使用以下命令启用http调用:

@echo off
setlocal EnableExtensions DisableDelayedExpansion
set "SourceFolder=C:\test"
set "LogExtract=%SourceFolder%\ExtractionLog.txt"
set "LogError=%SourceFolder%\ErrorLog.txt"
set "ArchiveExtracted="

del /Q "%LogExtract%" "%LogError%" 2>nul

for /D %%I in ("%SourceFolder%\*") do (
    if /I not "%%~nxI" == "done" (
        for /F "eol=| delims=" %%J in ('dir "%%I\*.rar" "%%I\*.zip" /A-D-H /B /ON 2^>nul') do (
            if exist "%%I\%%J" (
                echo Extracting "%%I\%%J" ...
                "%ProgramFiles%\WinRAR\WinRAR.exe" x -cfg- -logpfu="%LogExtract%" -or -- "%%I\%%J" "%%I\"
                if errorlevel 1 (
                    set "ArchiveFile=%%I\%%J"
                    >>"%LogError%" call echo Error %%ErrorLevel%% on extracting "%%ArchiveFile%%"
                ) else (
                    echo %%~nJ| %SystemRoot%\System32\findstr.exe /I /R "\.part[0123456789][0123456789]*$" >nul
                    if errorlevel 1 ( del /F "%%I\%%J" ) else for %%# in ("%%~nJ") do del /F /Q "%%I\%%~n#.part*%%~xJ"
                )
            )
        )
        if /I not "%%~nxI" == "done" if not exist "%%I\*.rar" if not exist "%%I\*.zip" move /Y "%%I" "%SourceFolder%\done\"
    )
)


endlocal

请注意,数据正在返回字符串。 如果将其附加到html中,则会显示directory

答案 2 :(得分:0)

除非使用Web服务器,否则不会使用

Hand 编码(无需安装Web服务器),有许多工具可以为单个目录提供服务,例如PHP或{{3 }}内置服务器。

但是编码是:您无法通过javascript访问本地文件系统,但是如果您在导航栏中键入(file://)网址或点击链接,浏览器就可以指向它。

在链接的情况下,浏览器会在远程页面(来自Web服务器)中拒绝它们,而不是已经存在于本地文件中(否则您将看不到网页的下载版本)。

我从未测试过绝对路径,但是(我认为)如果您对该目录具有权限,它应该可以工作。

如果没有,则存在浏览器扩展程序,例如Python,该扩展程序允许打开该链接(如果用户接受)。

问题是,正如我所说,您需要将链接手动放置在页面中,如果链接太多,则可能需要一些时间,除非您习惯了Vim等真正的编辑器,或者至少是您,能够使用您喜欢的任何编程语言生成它。