我在Sharepoint页面中生成PDF文件;因为我到目前为止无法让用户选择pdf文件的登陆点(如here所述),我决定在页面上创建一个指向该文件的链接,希望点击链接将打开文件。这是代码:
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);
这样可以很好地创建链接:
...但是点击该链接不会打开该文件。或者给出一个错误的消息;它只是像沼泽中的一块块一样坐在那里。
为了验证它与PDF文件没有关系,我尝试在路径中创建一个文本文件并访问它:
String pdfFileName = String.Format("DirectPayDynamic_{0}.pdf", pdfFileID);
pdfFileName = "czechitout.txt"; // Remove after testing
...但是,唉,同时点击“czechitout.txt”也没有做任何事情 - 记事本没有公开或完全表明其顽固不化的原因。
那么:如何在Sharepoint页面上获取链接以调用相关软件来运行引用的文件?
注意:我愿意打开资源管理器,显示文件(通常用户会将其从一个地方复制到另一个地方)。
只需保存没有任何路径信息的文件,如下所示:
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);
当我将链接混搭时,我得到了“页面错误”
F12ing给了我低调/瘦/ buttlescut:
不允许加载本地资源:file:///DirectPayDynamic_20150717_clayshan_0.pdf
然后我尝试了保存到特定目录的建议(不使用花哨的“SpecialFolder”爵士乐,就像这样:
String pdfFileName = String.Format(@"C:\Projects\DirectPaymentWebForm\DirectPayDynamic_{0}.pdf", pdfFileID);
...但我的表现并不好(文件在那里,但试图通过链接调用它是一种无用的练习)。
我甚至尝试使用低文本文件de modo que:
String pdfFileName = @"C:\Projects\DirectPaymentWebForm\tryopeningthis.txt";
...但是我的抓住了:
catch (Exception ex)
{
String exMsg = ex.Message;
}
...其中msg是,“访问路径'C:\ Projects \ DirectPaymentWebForm \ tryopeningthis.txt'被拒绝。”
路径/文件确实存在;为什么我不能用pdf文件得到同样的错误消息?!?
答案 0 :(得分:1)
这不是文件的问题。这是因为安全概念。 我们在网页中引用的任何文件都需要在相同的目录结构下。 如果您可以使用浏览器中的 F12 选项打开开发人员工具,则可以看到一些控制台错误
不允许加载本地资源:“您的文件路径”
你可以通过两种方式实现这一目标:
希望这能解决你的问题。
<强> 修改 强> 使用第1点中提到的方法,您可以使用以下代码。
<a href="<your file path>">link</a>
在文件路径中,不需要提及file:/// text。 这有效
<强> 修改 强> 上面的过程使文件加载到当前页面本身。
要在另一个窗口或弹出窗口中加载文件,请使用
<a href="javascript:window.Open("<file name>");">link</a>