У меня есть GridView, который имеет следующее поле шаблона, которое содержит имя файла, когда пользователь щелкает имя файла, я вызываю window.open (), чтобы открыть файл. У меня вопрос, я могу только передать относительный путь к window.open (). Я получаю ошибку, если я использую полный путь. Можно ли использовать полный путь для открытия файла? Благодарю.
<asp:TemplateField HeaderText="FileName">
<ItemTemplate>
<asp:LinkButton ID="lnkFile" runat="server"
Text='<%# Eval("FileName")%>' OnClick="lnkFile_Click">
</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
Добавлено: фактическое местоположение файла определяется в web.config.
Я написал следующее lnkFile_Click (). Старая часть откроет новое окно для файла, но я не могу передать полный путь к файлу. Новая часть предоставит вам возможность открыть или сохранить файл. Мой вопрос, это вызовет проблему безопасности?
protected void lnkFile_Click(object sender, System.EventArgs e)
{
string fileName = ConfigurationSettings.AppSettings["SPRAttachmentLocation"] + "\\SPR" + sprID + "\\" + ((LinkButton)sender).Text;
if (!File.Exists(fileName))
{
Exception ex = new Exception("Could not find the file, please contact your administrator.");
Response.Write("<p align=\"center\"><br /><br /><br /><br />There has been an Error: <strong>" + ex.Message + "</strong></p>\n");
return;
}
Новое:
* * 1010
Old:
string newWindowUrl = "/SPR_Upload/SPR" + sprID + "/" + ((LinkButton)sender).Text;
string javaScript =
"<script type='text/javascript'>\n" +
"<!--\n" +
"window.open('" + newWindowUrl + "');\n" +
"// -->\n" +
"</script>\n";
Page.ClientScript.RegisterStartupScript(GetType(), "", javaScript);
}