【发布时间】:2018-04-24 22:46:21
【问题描述】:
大家好,你们好吗:
我试图通过 enctype="multipart/form-data" 将图像上传到 mysql 行并且我得到奇怪的结果:
Java JSP 查看图片:
<a href="viewevent?id=<%= viewevent.getId()%>">
<img alt="" class="img-responsive image1" src="ViewImage?id=<%= viewevent.getId() %>">
</a>
查看图像的Java ViewImage servlet 方法:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
String id = request.getParameter("id");
DataAccess bd = new DataAccess();
bd.openConnection();
ResultSet rs = bd.exQuery("SELECT * FROM eventos WHERE id="+id , "SELECT");
try{
while(rs.next()){
response.setContentType("image/png");
System.out.println(rs.getBytes("foto"));
response.getOutputStream().write(rs.getBytes("foto"));
response.reset();
response.setContentType("image/png");
// Write image content to response.
response.getOutputStream().write(rs.getBytes("foto"));
}
bd.closeConnection();
}catch(Exception e){
System.out.println("Error cogiendo foto");
}
}
Java JSP 上传图片:
<form action="addevent" method="post" enctype="multipart/form-data">
...
<div class="form-group">
<label for="foto">Image</label>
<input name="foto" id="imagen" type=file accept=".jpg, .jpeg, .png">
</div>
...
</form>
并添加event servlet代码来上传图片:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
...
Part foto = request.getPart("foto");
...
byte[] data = new byte[(int) foto.getSize()];
foto.getInputStream().read(data, 0, data.length);
bd.exQuery("UPDATE eventos SET foto = '"+data+"' WHERE titulo='"+titulo+"';", "UPDATE");
bd.closeConnection();
...
}
当我将 BLOB 文件从 MySQL 保存为 txt 文件时,我得到以下内容:
[B@2a83de12
[B@3d00eeab
...
正如您所见,当我将它们另存为 txt 时,我只会得到一些字符...使用此代码我无法上传图像并在 src 上查看它们。我不知道我做错了什么,但这不会起作用......
提前致谢!
【问题讨论】:
-
ResultSet rs = bd.exQuery("SELECT * FROM eventos WHERE id="+id -
@fge 我知道那里可能会发生 SQL 注入,但这不会投入生产,所以我不介意。
-
@RomanC 我试图将其替换为 data.toString() 但我得到了相同的结果