2016-02-13 4 views
1

Я пытаюсь получить файл изображения, загруженный клиентом, и позволяет им хранить его на удаленном сервере. Код полностью настроен и способен сохранять изображение в виде Blob, когда я жестко кодирую путь к файлу.Сохранить входной файл HTML как файл java

Но как я могу хранить входной файл HTML (изображение) в виде файла? Я сохраняю значения String следующим образом, который работает, но что эквивалентно, когда я хочу сохранить изображение в виде файла на Java?

Я пробовал следующее, где я прокомментировал, но он возвращает ошибку следующим образом.

Несоответствие типа: не удается преобразовать из строки в файл

<!-- HTML Form where the File is being uploaded --> 
<form method="post" action="process.jsp"> 
    <div class="form-group"> 
     <input type="text" class="form-control" id="contact" name="contact"> 
    </div> 
    <div class="form-group"> 
     <input type="file" class="form-control" id="file" name="file"> 
    </div> 
    <button type="submit" class="btn">Submit</button> 
</form> 


//process.jsp 
<body> 
<% 
    //String works. 
    String contact = request.getParameter("contact"); 

    //Harcoding file path works. 
    File img = new File("C:\\Users\\username\\Desktop\\a.jpg"); 

    //**ERROR** - Trying this but returns error mentioned above. 
    //File img= request.getParameter("file"); 

    PreparedStatement stmt; 
    FileInputStream fis; 

    try { 
     Class.forName("com.mysql.jdbc.Driver"); 
     Connection conn = DriverManager.getConnection("jdbc:mysql://1.1.1.1:3306/something", 
       "username", "password"); 

     stmt = conn.prepareStatement(
       "INSERT INTO table(contact, image) values (?, ?)"); 
     stmt.setString(1, contact); 

     fis = new FileInputStream(img); 
     stmt.setBinaryStream(2, fis, (int)(img.length())); 
     stmt.executeUpdate(); 
    } 
    catch (Exception e) { 
     e.printStackTrace(); 
    } 
%> 
</body> 

//Full Error message: 

org.apache.jasper.JasperException: Unable to compile class for JSP: 

An error occurred at line: 24 in the jsp file: /process.jsp 
Type mismatch: cannot convert from String to File 
21:  String contact= request.getParameter("contact"); 
22:  //File img = new File("C:\\Users\\username\\Desktop\\a.jpg"); 
23: 
24:  File img = request.getParameter("file"); 
25: 
26:  PreparedStatement stmt; 
27:  FileInputStream fis; 


Stacktrace: 
    org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:103) 
    org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:366) 
    org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:485) 
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:379) 
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:354) 
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:341) 
    org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:657) 
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:357) 
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395) 
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:727) 
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
+0

Возможный дубликат [Как сохранить строку в текстовом файле с помощью Java?] (Http://stackoverflow.com/questions/1053467/how-do-i-save-a-string-to-a- text-file-using-java) –

+0

@Elogent Как это дублируется? У меня проблема с сохранением изображения. – kar

+0

В своем вопросе вы сказали, что пытаетесь сохранить «файл HTML». HTML - это текст. Кроме того, вы сказали, что у вас уже есть * строка, поэтому единственным оставшимся шагом является сохранение этой строки в текстовом файле. –

ответ

1

Вы установите тип контента в multipart/form-data? Это необходимо, если ваша форма включает элементы.

+0

Нет, я этого не делал. Хорошая благодарность. Не думайте, что это решает проблему, но это могло бы вызвать проблемы, которые я считаю. Благодарю. – kar

Смежные вопросы