gpt4 book ai didi

file - 如何使用文件 ://url with no http server 从 Chrome 使用文件系统访问 API

转载 作者:行者123 更新时间:2023-12-04 08:50:24 25 4
gpt4 key购买 nike

我想在我的电脑上从 Chrome 打开一个 html 文件,没有 http 服务器,我希望 HTML 文件中的 JavaScript 能够在本地文件系统中读写文件,并浏览目录。
如何使用文件系统 API 执行此操作:https://wicg.github.io/file-system-access/ ?

最佳答案

文件系统 API 目前在 Chrome 85 中不可用。现在您可以使用批处理文件启动 html 文件,该文件将使用正确的适当命令行选项定位并启动 Chrome。
将批处理文件命名为与 html 文件相同的名称,并将以下内容放入批处理文件中:

@echo off

setlocal
set name=%~n0
set here=%~dp0

cd /d %here%
set indexFile=%here%%name%.html
if not exist "%indexFile%" set indexFile=%here%%name%.htm
if not exist "%indexFile%" Echo Could not locate "%name%.htm" or "%name%.html" & pause & goto :eof

get path to msedge.exe
set exe=
FOR /F "tokens=2* skip=2" %%a in ('reg query HKCR\MSEdgeHTM\DefaultIcon /ve') do set exe=%%b
cls
set exe=%exe:~0,-2%
if defined exe goto exeFound

rem get path to chrome.exe
set exe=
FOR /F "tokens=2* skip=2" %%a in ('reg query HKCR\ChromeHTML\DefaultIcon /ve') do set exe=%%b
cls
set exe=%exe:~0,-2%
if defined exe goto exeFound

start "" "%indexFile%"
goto :eof

:exeFound
start "" "%exe%" --enable-experimental-web-platform-features --disable-web-security --no-proxy-server --no-sandbox --allow-file-access-from-files --allow-file-access --no-default-browser-check --no-first-run --allow-running-insecure-content --enable-local-file-accesses --disable-extensions --user-data-dir="%temp%\%name%" --app="file:///%indexFile%"
在 javascript 中,您可以这样调用:
确定 API 是否可用
if (typeof showDirectoryPicker === 'undefined')
访问目录或文件
const directoryHandle = await showDirectoryPicker()
const fileHandle = await directoryHandle.getFileHandle(fileName)
const str = await (await fileHandle.getFile()).text();
请参阅 showOpenFilePicker()、showSaveFilePicker() 和 showDirectoryPicker(),位于
https://wicg.github.io/file-system-access/更多。
更新:
用 Chrome 88 测试,完全不需要批处理文件了。
更新 2:
如何在针对文件启动 Chrome 或 Edge 时禁用网络安全:基于 url,来自 c#:
private static void LaunchBrowser(string name, string indexFilePath)
{
var exe = GetBrowserExePath();
if (string.IsNullOrEmpty(exe))
{
Console.WriteLine("Could not locate browser");
return;
}

var userDataDir = Path.Combine(Path.GetTempPath(), name);
var indexFile = new Uri(indexFilePath).AbsoluteUri;

var parameters =
" --disable-web-security" +
" --no-default-browser-check" +
" --no-first-run" +
" --disable-extensions" +
" --user-data-dir=" + "\"" + userDataDir + "\"" +
" --app=" + "\"" + indexFile + "\"" +
"";
Process.Start(exe, parameters);
}

private static string GetBrowserExePath()
{
string exe = GetBrowserExePathWithKey("MdSEdgeHTM");
if (string.IsNullOrEmpty(exe))
{
exe = GetBrowserExePathWithKey("ChromeHTML");
}

return exe;

string GetBrowserExePathWithKey(string keyForChromeBaseBrowser)
{
var key = Registry.ClassesRoot.OpenSubKey(keyForChromeBaseBrowser);
if (key != null)
{
key = key.OpenSubKey("DefaultIcon");
if (key != null)
{
var v = key.GetValue(string.Empty) as string;
var y = Regex.Match(v, @"(.*\.exe),");
if (y.Success)
{
var g = y.Groups;
if (g.Count > 1)
{
return g[1].Value;
}
}
}
}

return string.Empty;
}
}

关于file - 如何使用文件 ://url with no http server 从 Chrome 使用文件系统访问 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64129713/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com