如何获取文件的 link 以打开该文件?

How can I get a link to a file to open said file?

我在 Sharepoint 页面中生成了一个 PDF 文件;由于到目前为止我无法让用户选择 pdf 文件的着陆点(如询问 here),我决定为页面上的文件创建一个 link,希望单击 link 将打开该文件。这是代码:

        String pdfFileID = GetYYYYMMDDAndUserNameAndAmount();
        String pdfFileName = String.Format("DirectPayDynamic_{0}.pdf", 
    pdfFileID);
        String fileFullpath 

Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory), pdfFileName); 
        String fileLinkBase = "Generated PDF: <a href=\"file:///{0}\">{1}</a>";
        String filelink = String.Format(fileLinkBase, fileFullpath, pdfFileName);
        File.WriteAllBytes(fileFullpath, bytes);
        AddVerticalSpace();
        var pdflink = new Label // would this be preferable: "LiteralControl pdflink = new LiteralControl();" ?
        {
            CssClass = "dplatypus-webform-field-label",
            Text = filelink
        };
        this.Controls.Add(pdflink);

这创建 link 就好了:

...但是单击 link 不会打开文件。或者给一个错误信息;它就像沼泽中的一个肿块一样坐在那里。

为了验证它与 PDF 文件无关,我尝试在路径中创建一个文本文件并访问它:

String pdfFileName = String.Format("DirectPayDynamic_{0}.pdf", pdfFileID);
pdfFileName = "czechitout.txt"; // Remove after testing

...但是,唉,同样点击 "czechitout.txt" 什么也没做 - 记事本不会打开,也不会给出任何指示,说明其拒绝这样做的原因。

那么:我怎样才能在 Sharepoint 页面上获得 link 来调用相关软件来 运行 引用的文件?

更新

注意:我会满足于打开资源管理器,显示文件(通常用户无论如何都会将它从一个地方复制到另一个地方)。

更新 2

通过简单地保存没有任何路径信息的文件,像这样:

String pdfFileID = GetYYYYMMDDAndUserNameAndAmount();
String pdfFileName = String.Format("DirectPayDynamic_{0}.pdf", pdfFileID);
String fileLinkBase = "Generated PDF: <a href=\"file:///{0}\">{1}</a>";
String filelink = String.Format(fileLinkBase, pdfFileName, pdfFileName);
File.WriteAllBytes(fileFullpath, bytes);
AddVerticalSpace();
var pdflink = new Label // would this be preferable: "LiteralControl pdflink = new LiteralControl();" ?
{
    CssClass = "finaff-webform-field-label",
    Text = filelink
};
this.Controls.Add(pdflink);

当我捣碎 link 时,我得到 "Error on Page"

F12ing 给我 low-down/skinny/buttlescut:

不允许加载本地资源:file:///DirectPayDynamic_20150717_clayshan_0.pdf

更新 3

然后我尝试了保存到特定目录的建议(不使用 fancy-pants "SpecialFolder" jazz,像这样:

String pdfFileName = String.Format(@"C:\Projects\DirectPaymentWebForm\DirectPayDynamic_{0}.pdf", pdfFileID);

...但我的表现并没有好到哪里去(文件放在那里,但试图通过 link 调用它是徒劳的)。

更新 4

我什至用一个低级文本文件尝试过,de modo que:

String pdfFileName = @"C:\Projects\DirectPaymentWebForm\tryopeningthis.txt";

...但是我的捕获块已到达:

catch (Exception ex)
{
    String exMsg = ex.Message;
}

...其中消息是,“访问路径 'C:\Projects\DirectPaymentWebForm\tryopeningthis.txt' 被拒绝。

path/file 是否存在;为什么我在 pdf 文件中得不到相同的错误信息?!?

这不是文件的问题。这是因为安全概念。 我们在网页中引用的任何文件都需要位于相同的目录结构下。 如果您可以在浏览器中使用 F12 选项打开开发人员工具,您会看到一些控制台错误显示

Not allowed to load local resource: "your file path"

您可以通过两种方式实现:

  1. 尝试将文件生成到应用程序文件夹结构
  2. 创建一个 link 按钮并单击该按钮,将文档作为流发送到输出

希望这能解决您的问题。

编辑 使用第 1 点中提到的方法,您可以使用以下代码。

   <a href="<your file path>">link</a>

在文件路径中,不需要提及file:/// 文本。 这有效

编辑 上述过程使文件加载到当前页面本身。

要在另一个 window 中加载文件或作为弹出窗口加载文件,请使用

<a href="javascript:window.Open("<file name>");">link</a>