2013-03-20 4 views
1

내 웹 페이지에 버튼이 있습니다. 클릭하면 브라우저로 문서를 보내고 싶습니다.버튼을 통해 파일 다운로드

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 개체 양식 속성은 파일의 이름이 : 여기

는 클릭 이벤트에서 코드입니다.

처음에는 제대로 작동했지만 파일 저장 창이있었습니다. 하지만 이제는 더 이상 작동하지 않습니다. Chrome에서 웹 사이트를 실행할 때 아무런 변화가 없습니다. 내가 잘못 여기서 뭐하는 거지

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. 

: 나는 IE9에서 웹 사이트를 실행하면 , 나는 내되지 않습니다 일부 파일에 다음 오류 메시지가?

RG, 에릭

+0

FYI : 귀하의 docx MIME 형식이 올바르지 않습니다. 그것은'application/vnd.openxmlformats-officedocument.wordprocessingml.document'이어야합니다 – Win

답변

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(); 
+0

나는 그 결과를 시도했습니다. – Eric

+0

서버 컨트롤 중 하나에서 스크립트 오류가 발생했습니다. Ajax 또는 UpdatePanel을 통해 파일을 다운로드하지 않았는지 확인하십시오. 서버 컨트롤을 한 번에 하나씩 주석 처리하고 문제의 범위를 좁 힙니다. – Win

0

다른 해결책으로 사용됩니다.

나는 새로운 ASPX 페이지를 생성하고로드 이벤트에 다음 코드를 넣어 :
Response.Redirect(String.Format("givefile.aspx?file={0}", MNCrq.Form), False) 

지금 내가 파일을 얻을 : 나는하여 전화를 내 버튼 이벤트에서

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() 

합니다.

rg. Eric

+1

aspx를 파일 처리기로 사용하는 것은 좋지 않습니다 (작동 함에도 불구하고). 파일을 제공하려면 ashx를 제안하고 싶습니다. – Win

관련 문제