2017-11-19 21 views
0

PrimeFaces에서 내 보낸 예상 아랍어 이름의 파일에 텍스트 대신 ".csv"와 같은 확장자가있는 공백 (이름)이있는 문제가 발생했습니다. 파일 내용은 아랍어로 표시됩니다. Apache-Tomcat 6.0.29 서버가 있습니다. 나는 디버깅을했고 그 파일이 return 문 (아래에 주어진 자바 코드)까지 아랍어로 이름을 가지고 있지만 그 후에는 디버깅 할 수 없다는 것을 발견했다. 대답은 여기에 대답을 Primefaces fileDownload non-english file names corrupt 주어진 주어진 시도했지만 Firefox 나를 사용했기 때문에 그것은 나를 위해 작동하지 않았다. URIEncoding = "UTF-8"커넥터 태그 server.xml에 이미 속성을 설정했습니다.Firefox의 PrimeFaces에서 아랍어 이름으로 파일 내보내기

XHTML :

<p:commandLink id="export" ajax="false" > Export 
<p:fileDownload value="#{groupView.export}"/> 
</p:commandLink> 

자바 :

public StreamedContent getExport() { 

    String content = "Any text in Arabic or English"; 

    // send CSV file to browser 
    InputStream is; 
    StreamedContent file = null; 
    try { 
     is = new ByteArrayInputStream(content.getBytes("UTF-8")); 
     file = new DefaultStreamedContent(is, "application/csv", "المشاركات.csv","UTF-8"); 
    } catch (UnsupportedEncodingException e) { 
     e.printStackTrace(); 
    } 

    return file; //FILE NAME IS IN ARABIC TILL HERE 
    } 

PS : 나는 일반 자바를 통해 아랍어 이름을 가진 파일을 만드는 시도하고 일했다.

+0

다른 질문에 대한 링크를 클릭하십시오. 실패했습니다. 수정하십시오. 그리고 [mcve]를 만들어보세요. 다른 사람을 구하기 위해 노력하고 있습니다. – Kukeltje

+0

수정 됨. 링크가 작동 중입니다. – MNH

+0

코드 스 니펫을 변경합니다 – MNH

답변

0

게시물의 대답 Firefox는 대부분의 브라우저에서 완벽하게 작동합니다. 이 문제를 극복하기 위해 p:fileDownload 태그에 contentDisposition 속성을 사용했습니다. 이 구문은 조금 이상하지만 작동합니다. 별표와 작은 따옴표가 그 일부입니다.

<p:fileDownload value="#{groupView.export}" contentDisposition="inline; filename*=utf-8''%D8%A7%D9%84%D9%85%D8%B4%D8%A7%D8%B1%D9%83%D8%A7%D8%AA.csv"/> 

정상적인 상황에서는이 인코딩 된 텍스트가 bean에서 전달되지만 명확성을 위해 추가했습니다.