如何获取文件的 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"
您可以通过两种方式实现:
- 尝试将文件生成到应用程序文件夹结构
- 创建一个 link 按钮并单击该按钮,将文档作为流发送到输出
希望这能解决您的问题。
编辑
使用第 1 点中提到的方法,您可以使用以下代码。
<a href="<your file path>">link</a>
在文件路径中,不需要提及file:/// 文本。
这有效
编辑
上述过程使文件加载到当前页面本身。
要在另一个 window 中加载文件或作为弹出窗口加载文件,请使用
<a href="javascript:window.Open("<file name>");">link</a>
我在 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"
您可以通过两种方式实现:
- 尝试将文件生成到应用程序文件夹结构
- 创建一个 link 按钮并单击该按钮,将文档作为流发送到输出
希望这能解决您的问题。
编辑 使用第 1 点中提到的方法,您可以使用以下代码。
<a href="<your file path>">link</a>
在文件路径中,不需要提及file:/// 文本。 这有效
编辑 上述过程使文件加载到当前页面本身。
要在另一个 window 中加载文件或作为弹出窗口加载文件,请使用
<a href="javascript:window.Open("<file name>");">link</a>