Olá, pessoal!
Estou tentando programar para enviar a imagem e descrição, mas ocorreu a problemas e apareceu mensagem de erro, veja em baixo.
Mensagem de Erro
Tam: 2
Valor: Identidade.jpg
com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'imagem' at row 1
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2939)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1623)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1715)
at com.mysql.jdbc.Connection.execSQL(Connection.java:3249)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1268)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1541)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1455)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1440)
at DAO.FotosDAO.incluir(FotosDAO.java:24)
at Servlet.IncluirFotos.doPost(IncluirFotos.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Unknown Source)
desc: Identidade
com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'imagem' at row 1
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2939)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1623)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1715)
at com.mysql.jdbc.Connection.execSQL(Connection.java:3249)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1268)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1541)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1455)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1440)
at DAO.FotosDAO.incluir(FotosDAO.java:24)
at Servlet.IncluirFotos.doPost(IncluirFotos.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Unknown Source)
Controlador (servlet)
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
Fotos ft = new Fotos();
FotosDAO dao = new FotosDAO();
if(isMultipart){
FileItemFactory fact = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(fact);
List<FileItem> items = null;
try {
items = (List<FileItem>) upload.parseRequest(request);
System.out.println("Tam: "+items.size());
} catch (FileUploadException e) {
System.out.println("Erro de arquivo: "+e.getMessage());
e.printStackTrace();
}
for(FileItem item : items){
if(item.isFormField()){
System.out.println("desc: "+item.getString());
ft.setDescricao(item.getString());
} else {
System.out.println("Valor: "+item.getName());
ft.setFoto(item.get());
}
dao.incluir(ft);
}
}
DAO
public class FotosDAO {
public void incluir(Fotos ft){
try {
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/sistemafotos","root","");
PreparedStatement st = conn.prepareStatement("Insert into fotos values(null,?,?)");
st.setBytes(1, ft.getFoto());
st.setString(2,ft.getDescricao());
st.executeUpdate();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Incluir o foto no site (JSP)
<body>
<form action="/ServletComJSPImagem/IncluirFotos" method="post" enctype="multipart/form-data">
<table>
<tr><td>Arquivo</td><td><input type="file" name="imagem"></td></tr>
<tr><td>Descrição</td><td><input type="text" name="desc"></td></tr>
<tr><td colspan="2"><input type="submit" value="Enviar imagem"></td></tr>
</table>
</form>
</body>
Espero que me ajuda para corrigir o erro. pelo menos não sei qual os erros que diz “com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column ‘imagem’ at row 1”
Obrigado!