当我尝试打开本地文件时,我使用以下内容:
<a href="file:///Users/username/Dropbox/Documents/a/some document.numbers">some document</a>
当我在浏览器中单击以上内容时,它会打开Finder到文件夹。但是不会打开文件。我是否需要做其他操作才能使文件在Numbers中打开?
<input type="file">
请求客户端文件。您只能在浏览器中打开某些类型的文件,例如 html
、css
、js
和 mp4
,否则浏览器将会提示下载。同时请记住,浏览器会使用 %20
替换空格。我建议右键单击文件并使用 Chrome 打开,然后复制该链接并使用它。
只要另一个文件所在的文件是本地的,您就可以打开本地文件。
<a href="file:///Users/username/Dropbox/Documents/a/some%20document.numbers">some document</a>
这里提供一种客户端和服务器端共同下载本地文件的替代方式:
<a onclick='fileClick(this)' href="file://C:/path/to/file/file.html"/>
js:
function fileClick(a) {
var linkTag = a.href;
var substring = "file:///";
if (linkTag.includes(substring)) {
var url = '/v/downloadLocalfile?path=' +
encodeURIComponent(linkTag);
fileOpen(url);
}
else {
window.open(linkTag, '_blank');
}
}
function fileOpen(url) {
$.ajax({
url: url,
complete: function (jqxhr, txt_status) {
console.log("Complete: [ " + txt_status + " ] " + jqxhr);
if (txt_status == 'success') {
window.open(url, '_self');
}
else {
alert("File not found[404]!");
}
// }
}
});
}
服务端 [Java]:
@GetMapping("/v/downloadLocalfile")
public void downloadLocalfile(@RequestParam String path, HttpServletResponse
response) throws IOException, JRException {
try {
String nPath = path.replace("file:///", "").trim();
File file = new File(nPath);
String fileName = file.getName();
response.setHeader("Content-Disposition", "attachment;filename=" +
fileName);
if (file.exists()) {
FileInputStream in = new FileInputStream(file);
response.setStatus(200);
OutputStream out = response.getOutputStream();
byte[] buffer = new byte[1024];
int numBytesRead;
while ((numBytesRead = in.read(buffer)) > 0) {
out.write(buffer, 0, numBytesRead);
}
// out.flush();
in.close();
out.close();
}
else {
response.setStatus(404);
}
} catch (Exception ex) {
logger.error(ex.getLocalizedMessage());
}
return;
}
这可能不是您想要做的事情,但有人可能会发现它很有用:
如果您想要分享一个网络文件的链接(例如通过电子邮件),您可以像这样操作:
file:///Volumes/SomeNetworkFolder/Path/To/file.html
然而,这也需要接收者在Finder中连接到网络文件夹 --- 在菜单栏中,通过使用http服务器,您可以在浏览器中公开整个文件系统。
caddy file-server --listen :2022 --browse --root /
python3 -m http.server
python3 -m SimpleHTTPServer
这将
<a>
标签链接的方式。客户端将安装浏览器扩展程序,允许打开其他程序(例如Skype所拥有的)。 - SourceOverflow<input type="file">
如何打开文件?似乎比单击链接要麻烦得多。 - 4thSpace