2010-02-02 3 views
0

DisplayBinaryData.aspx라는 웹 페이지가 있습니다.이 페이지의 목적은 단어, Excel, PDF 또는 이미지를 표시하거나 다운로드하는 것입니다. 이 웹 페이지를 호출하고 쿼리 문자열을 사용하여 BinaryData 엔터티의 ID를 전달합니다. BinaryData 엔티티에는 asp.net fileUploadControl을 사용하여 업로드 한 파일, 파일 이름 및 contenttype이 들어 있습니다.여러 브라우저에서 asp.net을 사용하여 이미지 및 문서 표시

BinaryData obj = GetBinaryObjectById(int.Parse(Request.QueryString["id"])); 

    Response.Clear(); 

    Response.BufferOutput = true; 

    Response.AddHeader("Content-Disposition", "attachment; filename=" + obj.FileName); 

    Response.ContentType = obj.FileContentType; 

    Response.BinaryWrite(obj.BinaryFile); 

    Response.Flush(); 

    Response.Close(); 

    Response.End(); 

이 코드는 IE에서 완벽하게 실행하지만 파이어 폭스에서 실행될 때 실패 페이지로드의 코드는 다음과 같습니다. IE는 사용자에게 내용을 저장하거나 열지 묻습니다. FireFox는 또한 사용자에게 메시지를 표시하지만 대화 상자가 내용을 저장하거나 열지 못합니다. google chrome에서 이것을 실행할 때 - 대화 상자가 없으면 자동으로 콘텐츠를 다운로드하기 시작합니다.

내 질문 : FireFox와 호환되도록이 코드가 필요합니다 - 제안 사항이 있습니까?

답변

0

Chrome에서 말하는 동작은 Chrome의 기본 설정에 불과합니다. 옵션 창의 "고급 설정"탭으로 이동하여 변경할 수 있습니다. 그런 다음 "다운로드하기 전에 각 파일을 저장할 위치 묻기"체크 상자를 선택하십시오.

obj.FileName에 이름에 공백이 있습니까? 다른 브라우저에서 "Content Disposition"에 대한이 포스트를 참조하십시오.

오늘 다른 브라우저에서

내용 처리 나는, 가 다른 브라우저에 제출 동적으로 생성 된 다운로드가 매우 다르게/모든

셋업 근무 문제를 해결했다 우리는 사용자 정의 확장자 인 .mj를 가진 xml 파일을 가지고 있는데, 이는 이 ASP에 의해 제공되었다. HTTP 헤더에는 콘텐츠 처리 헤더와 응답 유형이 설정되어 있습니다.

Response.AddHeader "Content-Disposition", "attachment; filename=""our file.mj""" 
Response.ContentType = "text/xml" 

는 파일이 "우리의 file.mj"로 다운로드 한 Internet Explorer에서 괜찮 았는데. 그러나 FireFox와 Chrome은 매우 으로 동작했습니다. FireFox에서는 파일이 은 "our"로, Chrome 은 "file.xml"로 다운로드되었습니다. 지금 "ourfile.mj로 파일을 다운로드 할 수있는 공간 파이어 폭스 을 제거하여, 그래서 파이어 폭스에서는 이 문제가 파일 이름에 공백을 가진 에 의한 것 같습니다, funkdaddu하여이 포럼 게시물은 이 나를 도와 ". ...

관련 문제