2

http://code.google.com/appengine/kb/java.html#fileformsFileItemIterator에서 반환 한 FileItemStream의 인코딩을 어떻게 찾을 수 있습니까?

  ServletFileUpload upload = new ServletFileUpload(); 

     FileItemIterator iterator = upload.getItemIterator(request); 

     while (iterator.hasNext()) { 
      FileItemStream item = iterator.next(); 
      InputStream stream = item.openStream(); 

      if (!item.isFormField()) { 
       System.out.println("Got an uploaded file: " + item.getFieldName() 
         + ", name = " + item.getName() + " type = " +    item.getContentType()); 

      } 

에 설명 된대로 Servlet에서 업로드 된 파일을 받기 위해 Apache Commons FileUpload를 사용합니다. item.getContentType()이 다른 텍스트 파일의 파일 인코딩을 coutain 할 것인지 확실하지 않습니다. 요청 인코딩 (예 : ISO-8859-1) 또는 항상 파일 유형 만 포함하는 경우. 테스트에서 "text/plain"만 받았지만 클라이언트에서 보낸 "text/plain; Encoding = ISO-8859-1"을 기대했습니다.

item.getContentType()이 (클라이언트에서 보낸 경우) 인코딩을 포함해야한다고 내 이해가 정확합니까?

답변

2

FileItemStream.getContentType()은 브라우저의 POST에서 전달 된 모든 것을 반환합니다. "text/plain"일 수도 있고 "text/plain; Encoding = ISO-8859-1"일 수도 있고 아니면 가비지 일 수도 있습니다. 콘텐츠 유형은 브라우저에서 사용자에게 적절하게 제공한다고 믿는 문자열 값입니다 (즉, 전혀 신뢰하지 않습니다).