2012-08-02 1 views
1

기본적으로 사용자가 업로드 한 파일의 테이블 인 내 GWT & App Engine 애플리케이션에 대한 페이지가 있습니다. 여기 Firefox의 Google AppEngine Blobstore에서 파일을 다운로드 할 때 파일 이름이 불완전한 이유는 무엇입니까?

가 블롭을 제공 BlobServiceImpl의의 doGet 함수의 마지막 부분 일 때 상기 사용자 요청 : 코드는 상기 엔티티의 메타 데이터로부터 파일명을 취득

에서, HttpServletResponse를 상기 파일 이름을 설정

// got the entity already 

    filename = (String) entity.getProperty("filename"); 

    resp.addHeader("Content-Disposition", "filename=" + filename); 

    blobstoreService.serve(blobKey, resp); 

및 실제 블롭을 제공하십시오.

내가 겪고있는 문제는 파일 이름에 공백이있는 파일의 경우 첫 번째 단어에만 파일 이름이 설정된다는 점입니다. 공백 이후는 모두 제외됩니다. "My Amazing File.xls"라는 파일이 "My"로 저장되므로 상당히 성가시다.

아마도 문자 인코딩과 관련이 있을까요? 이상하게도 다른 브라우저에서 잘 작동합니다. 돕는

감사합니다 :)

답변

1

Amy가 말했듯이 이것은 Firefox 문제이며 App Engine과 관련이 없습니다.

이 변경 :

resp.addHeader("Content-Disposition", "filename=" + filename); 

이받는 사람 :

resp.addHeader("Content-Disposition", "filename=\"" + filename + "\""); 

내 문제를 해결했습니다.

해피 코딩!

0

당신은 아마 "는"20 % "가"수 있도록 파일 이름에를 urlencode 기능을 사용할 수 있습니다.

+0

이미 String.replace ("", "% 20")를 시도했습니다. % 20은 Chrome의 공백으로 다시 변경되지만 firefox에서는 파일 이름이 각 공백 대신 % 20으로 설정됩니다! – slugmandrew

+0

또한 URLEncoder.encode (파일 이름, "UTF-8")를 시도했지만 공백을 "+"기호로 바꿉니다./ – slugmandrew

+3

잘 알려진 FF 문제 (예 : https://www.google.com/ 검색? q = firefox + 다운로드 + 공백 + in + 파일 이름). 파일 이름 매개 변수를 큰 따옴표로 둘러싼 것은 분명히 해결됩니다 (예 : https://support.mozilla.org/en-US/questions/724438). –