有什么方法可以让html链接打开一个文件夹

时间:2009-05-13 01:09:37

标签: html directory hyperlink

我需要让应用程序的用户通过单击网页内的链接打开文件夹。文件夹的路径位于网络上,可以从任何地方访问。我可能确定没有简单的方法可以做到这一点,但也许我错了?

9 个答案:

答案 0 :(得分:98)

您想在Windows资源管理器中打开共享文件夹吗?您需要使用file:链接,但有一些警告:

  • 如果链接是已转换的UNC路径(file://server/share/folder/),则Internet Explorer将起作用。
  • 如果链接使用五个斜杠(file://///server/share/folder,用户拥有disabled the security restriction on file: links in a page served over HTTP,则链接处于自己的错位形式。值得庆幸的是,IE也接受了错误的链接表单。
  • 无法说服Opera,Safari和Chrome在通过HTTP提供的网页中打开file:链接。

答案 1 :(得分:5)

网址file://[servername]/[sharename]应该打开网络上共享文件夹的资源管理器窗口。

答案 2 :(得分:4)

确保设置了文件夹权限,以便允许目录列表,然后使用chmod 701将锚点指向该文件夹(尽管可能存在风险) 例如

<a href="./downloads/folder_i_want_to_display/" >Go to downloads page</a>

确保该目录中没有index.html任何索引文件

答案 3 :(得分:4)

我决定做的是在每个人的计算机上安装一个本地网络服务,例如侦听端口 9999 并在被告知时在本地打开一个目录。我的示例 node.js express 应用程序:

import { createServer, Server } from "http";

// server
import express from "express";
import cors from "cors";
import bodyParser from "body-parser";

// other
import util from 'util';
const exec = util.promisify(require('child_process').exec);

export class EdsHelper {
    debug: boolean = true;
    port: number = 9999
    app: express.Application;
    server: Server;

    constructor() {
        // create app
        this.app = express();
        this.app.use(cors());
        this.app.use(bodyParser.json());
        this.app.use(bodyParser.urlencoded({
            extended: true
        }));

        // create server
        this.server = createServer(this.app);

        // setup server
        this.setup_routes();
        this.listen();
        console.info("server initialized");
    }

    private setup_routes(): void {
        this.app.post("/open_dir", async (req: any, res: any) => {
            try {
                if (this.debug) {
                    console.debug("open_dir");
                }

                // get path
                // C:\Users\ADunsmoor\Documents
                const path: string = req.body.path;

                // execute command
                const { stdout, stderr } = await exec(`start "" "${path}"`, {
                    // detached: true,
                    // stdio: "ignore",
                    //windowsHide: true,    // causes directory not to open sometimes?
                });

                if (stderr) {
                    throw stderr;
                } else {
                    // return OK
                    res.status(200).send({});
                }
            } catch (error) {
                console.error("open_dir >> error = " + error);
                res.status(500).send(error);
            }
        });
    }

    private listen(): void {
        this.server.listen(this.port, () => {
            console.info("Running server on port " + this.port.toString());
        });
    }

    public getApp(): express.Application {
        return this.app;
    }

}

以本地用户而非管理员身份运行此服务很重要,否则目录可能永远不会打开。
从您的网络应用程序向本地主机发出 POST 请求:http://localhost:9999/open_dir,数据:{ "path": "C:\Users\ADunsmoor\Documents" }

答案 4 :(得分:2)

如果将安全设置设置为中等水平,则使用file://///只是不起作用。

如果您只是希望用户能够下载/查看位于网络上的文件*或共享,则可以在IIS中设置虚拟目录。在“属性”选项卡上,确保选中“共享位于另一台计算机上”,“连接为...”是一个可以查看网络位置的帐户。

从您的网页链接到虚拟目录(例如http://yoursite/yourvirtualdir/),这将打开Web浏览器中的目录视图。

*您可以允许虚拟目录的写入权限,以允许用户添加文件但不尝试它,并假设网络权限将覆盖此设置。

答案 5 :(得分:2)

在Chrome中不起作用,但其他答案建议通过插件解决方案:

Can Google Chrome open local links?

答案 6 :(得分:1)

您还可以复制链接地址并将其粘贴到新窗口中以绕过安全性。这适用于chrome和firefox,但你可能需要在firefox中添加斜杠。

答案 7 :(得分:1)

参加聚会有点晚,但是我最近不得不为自己解决此问题,尽管略有不同,但它可能仍会帮助情况与我自己相似的人。

我在笔记本电脑上使用xampp在Windows上运行纯本地网站应用程序。 (我知道一个非常特定的环境)。在这种情况下,我使用html链接到php文件并运行:

Funcionarios.module

@NgModule({
  entryComponents: [FuncionariosComponent, ],
  declarations: [FuncionariosComponent, ],
  bootstrap: [FuncionariosComponent, ],
  exports: [ FuncionariosComponent,  ],
  imports: [
    CommonModule,
    ReactiveFormsModule,
    NgxMaskModule,
    FormsModule,
    RouterModule,
    MatFormFieldModule,
    MatInputModule,
    MatPaginatorModule,
    MatTableModule,
    MatSortModule,
    MatButtonModule,
    MatCheckboxModule,
    MatDatepickerModule,
    MatNativeDateModule,
    MatExpansionModule,
    MatOptionModule,
    MatSelectModule,
    MatDialogModule,
    MatRadioModule,
    MatCardModule,
    FuncionariosRoutingModule,
    MatAutocompleteModule,
    SharedModule ],
})
export class FuncionariosModule { }

这将打开本地Windows资源管理器窗口。

答案 8 :(得分:0)

希望有一天能对某人有所帮助。我当时正在制作一个小型POC,并且遇到了这个问题。 一个按钮,onClick显示文件夹的内容。下面是HTML,

<input type=button onClick="parent.location='file:///C:/Users/' " value='Users'>