Я пытаюсь получить файл изображения, загруженный клиентом, и позволяет им хранить его на удаленном сервере. Код полностью настроен и способен сохранять изображение в виде 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)
Возможный дубликат [Как сохранить строку в текстовом файле с помощью Java?] (Http://stackoverflow.com/questions/1053467/how-do-i-save-a-string-to-a- text-file-using-java) –
@Elogent Как это дублируется? У меня проблема с сохранением изображения. – kar
В своем вопросе вы сказали, что пытаетесь сохранить «файл HTML». HTML - это текст. Кроме того, вы сказали, что у вас уже есть * строка, поэтому единственным оставшимся шагом является сохранение этой строки в текстовом файле. –