上传图片,MultipartHttpServletRequest
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
MultipartFile mf = entity.getValue();
try {
byte[] data = mf.getBytes();
JSONObject result = userService.insertUserZp(user_jlbh, personid, targetid, targetname, data);
rd.putDataValue(result);
} catch (Exception e) {
e.printStackTrace();
}
}
直接存入数据库(图片字段为blob类型)
查询并返回给前端
提供单独照片查询接口返回bytes,下面为持久层写法:
public byte[] selectuserZp(String jlbh) {
String sql = "select zp from user_zp where jlbh=?";
try {
return this.jdbcTemplate.queryForObject(sql, (rs, rowNum) -> {
// TODO Auto-generated method stub
Blob blob = rs.getBlob("zp");
BufferedInputStream is = new BufferedInputStream(blob.getBinaryStream());
byte[] bytes = new byte[(int) blob.length()];
int len = bytes.length;
int offset = 0;
int read = 0;
try {
while (offset < len && (read = is.read(bytes, offset, len - offset)) >= 0) {
offset += read;
}
} catch (IOException e) {
e.printStackTrace();
}
return bytes;
}, jlbh);
} catch (EmptyResultDataAccessException e) {
return null;
}
}
controller或action写法:
@RequestMapping(value = "/selectUserZp")
public void selectUserZp(HttpServletRequest request, HttpServletResponse response, String jlbh) {
byte[] data = userService.selectUserZp(jlbh);
response.setContentType("image/jpeg");
response.setCharacterEncoding("UTF-8");
OutputStream outputStream = null;
try {
if(data.length > 0){
outputStream = response.getOutputStream();
outputStream.write(data);
outputStream.flush();
}
} catch (IOException e) {
} finally{
if(outputStream!=null) {
try {
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}