2015-03-27 2 views
0

Я написал сервлет, использующий servlet3.0 для загрузки файла, и он очень хорошо загружает файл. Но я хочу сохранить файл на сервере в формате, который он загружает клиентом.java - как получить тип файла в сервлет 3.0

 Part filePart = request.getPart("chosenFile"); 

     String filename = new SimpleDateFormat("yyyyMMddhhmmss").format(new Date()).toString(); 
     System.out.println(filePart.getContentType().split("/")[1]); 

     InputStream inputStream =null; 
     OutputStream outputStream =null; 

     File fileSaveDirectory = new File(UPLOAD_DIR); 
     if(!fileSaveDirectory.exists()){ 
      fileSaveDirectory.mkdir(); 
     } 

     String content_path = UPLOAD_DIR+File.separator+filename;//earlier 
     //here I was appending the string ".pdf" to every file 
     //but now I want the file type to be the uploaded file type. 
     //say if user uploads in .jpeg or any other. 

     System.out.println("Content Path : "+content_path); 

     outputStream = new FileOutputStream(new File(content_path)); 
     inputStream = filePart.getInputStream(); 
     int read=0; 

     while((read=inputStream.read())!=-1){ 
      outputStream.write(read); 
     } 

     if(outputStream!=null) 
      outputStream.close(); 
     if(inputStream !=null) 
      inputStream.close(); 

Как сохранить тип файла, тип загружаемого файла. Пожалуйста помоги !!!

ответ

0

См @http://docs.oracle.com/javaee/6/tutorial/doc/glraq.html:

private String getFileName(final Part part) { 
    final String partHeader = part.getHeader("content-disposition"); 
    LOGGER.log(Level.INFO, "Part Header = {0}", partHeader); 
    for (String content : part.getHeader("content-disposition").split(";")) { 
     if (content.trim().startsWith("filename")) { 
      return content.substring(
        content.indexOf('=') + 1).trim().replace("\"", ""); 
     } 
    } 
    return null; 
} 

Так что, когда ваш (загрузка файла) запрос настроен хорошо/нормально, (HTTP) заголовок content-disposition будет содержать (в том числе, разделенных ;) атрибут filename, которые вы можете использовать (в целом или) для извлечения суффикса файла.