Asp.net 返回ASHX中的ZipFile
我有一个ASHX文件,它接收一些参数(用户和密码)。使用这个参数,我需要发送一个zipfile作为ASHX的结果。我已经写了这段代码,但当我打开下载的zip时,它似乎已损坏Asp.net 返回ASHX中的ZipFile,asp.net,vb.net,ashx,Asp.net,Vb.net,Ashx,我有一个ASHX文件,它接收一些参数(用户和密码)。使用这个参数,我需要发送一个zipfile作为ASHX的结果。我已经写了这段代码,但当我打开下载的zip时,它似乎已损坏 Public Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest context.Response.Clear() context.Response.ContentType = "a
Public Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest
context.Response.Clear()
context.Response.ContentType = "application/x-zip-compressed"
Dim sLoginName As String = context.Request.QueryString("LOGIN_NAME")
Dim sLoginPassword As String = context.Request.QueryString("LOGIN_PASSWORD")
If (Not String.IsNullOrEmpty(sLoginName) And
Not String.IsNullOrEmpty(sLoginPassword)) Then
If (CheckLogin(sLoginName, sLoginPassword)) Then
Dim sZipUpdatePath As String = String.Empty
Dim sVersionToInstall As String = GetVersionToInstall(sLoginName, sLoginPassword)
Dim sZipName As String = "UPDATE.zip"
If (Not String.IsNullOrEmpty(sVersionToInstall) And
Not String.IsNullOrEmpty(sZipName)) Then
sZipUpdatePath = "~\Updates\" + sVersionToInstall + "\" + sZipName
context.Response.TransmitFile(context.Server.MapPath(sZipName))
End If
End If
End If
End Sub
如何解决它?测试了您的代码。我得到了一个正确的zip文件。您确定
UPDATE.zip
一开始没有损坏吗?很遗憾,没有,zip文件没有问题。在你的zip文件中插入了文件吗?是的,我已经插入了,当我打开zip时,我看到了文件。zip文件是否与处理程序同名?因为如果未到达context.Response.TransmitFile
,您仍然会得到一个zipfile,因为您将context.Response.ContentType
指定为zip。但是它将被破坏,因为它不是一个真正的zipfile。处理程序的名称是Update.ashx,zip的名称是Update.zipHow文件是否被破坏:它是否被截断,它的长度是否正确,但有损坏的数据,或者它在开始时是否有一些额外的数据?测试您的代码。我得到了一个正确的zip文件。您确定UPDATE.zip
一开始没有损坏吗?很遗憾,没有,zip文件没有问题。在你的zip文件中插入了文件吗?是的,我已经插入了,当我打开zip时,我看到了文件。zip文件是否与处理程序同名?因为如果未到达context.Response.TransmitFile
,您仍然会得到一个zipfile,因为您将context.Response.ContentType
指定为zip。但它将被损坏,因为它不是一个真正的zipfile。处理程序的名称是Update.ashx,zip的名称是Update.zipHow文件是否已损坏:文件是否被截断,长度是否正确,但数据是否已损坏,或者在开始时是否有一些额外的数据?