在我的网页上,我有一个按钮。 当我点击它时,我希望它将文档发送到浏览器。
以下是点击事件中的代码:
Private Sub btMNCgetTemplate_Click(sender As Object, e As EventArgs) Handles btMNCgetTemplate.Click
Dim MNCid As Integer = Me.cbMNCrequestType.SelectedValue
Dim mncRT As New MinorNetworkChangeTypeOfRequests
Dim MNCrq As New MNCTypeOfRequestItem
MNCrq = mncRT.Find(MNCid)
If MNCrq IsNot Nothing Then
If MNCrq.Form.ToLower.EndsWith(".doc") Or
MNCrq.Form.ToLower.EndsWith(".docx") Then
Response.ContentType = "Application/msword"
Else
Response.ContentType = "Application/x-msexcel"
End If
Response.AppendHeader("Content-Disposition", String.Format("attachment; filename={0}", MNCrq.Form))
Response.TransmitFile(Server.MapPath(String.Format("~/forms/{0}", MNCrq.Form)))
Response.End()
End If
End Sub
MNCrq对象Form属性具有文件名。
一开始这个工作正常,用户有一个保存文件窗口。 但现在它不再起作用了。 当我在Chrome中运行网站时,没有任何反应。 当我在IE9中运行该网站时,我在某个不属于我的文件中收到以下错误消息:
Unhandled exception at line 940, column 13 in http://localhost:29226/ScriptResource.axd?
d=DbqlGCg_y1TWNdNykQXSWTqf7VMHZvfOOc8W9SvKy5VJEvrKhkNOK5JNcaIC4d76X42JcWSxljh5epK1GqlRC4_NnfoLlKD1PfZ2-dNg98DHOKlBmICo8PKGlg73PqEQJR5AdM_sf6udu_6Vkp3cg9MicDI1&t=7c776dc1
0x800a139e - Microsoft JScript runtime error: Sys.WebForms.PageRequestManagerParserErrorException: The message received from the server could not be parsed.
我在这里做错了什么?
RG, 埃里克
答案 0 :(得分:1)
您可以使用WriteFile
。请确保Server.MapPath(String.Format("~/forms/{0}", MNCrq.Form))
返回存在的有效文件。
Response.AddHeader("Content-Disposition",
String.Format("attachment; filename={0}", MNCrq.Form))
Response.WriteFile(Server.MapPath(String.Format("~/forms/{0}", MNCrq.Form)))
Response.End();
答案 1 :(得分:0)
我只是一个专业人士,但我会尝试建议我曾经做过的事情:)
为什么不将文件添加到您网站的目录中,并作为随机示例使用
Server.Transfer("C:\Users\Eric\Desktop\Website\Attachments\WordFile.docx")
或将按钮更改为超链接并将其链接到文件?这是一种使事情变得更简单的方法,它需要的代码更少,而且不容易出错。
答案 2 :(得分:0)
使用其他解决方案。
我创建了一个新的ASPX页面,并在load事件中输入以下代码:
Dim bestand As String = Page.Request("file")
Response.ClearContent()
Response.ClearHeaders()
Dim fi As New FileInfo(Server.MapPath(".\forms\") + bestand)
Response.ContentType = "application/x-unknown" ' arbitrary
Response.AddHeader("Content-Disposition", "attachment; filename=" + bestand)
Response.AddHeader("Content-Length", fi.Length.ToString())
Response.BinaryWrite(File.ReadAllBytes(fi.FullName))
Response.End()
来自我的按钮事件我称之为:
Response.Redirect(String.Format("givefile.aspx?file={0}", MNCrq.Form), False)
现在我收到了文件。
RG。 埃里克