String picPath = "";
//@author wxd
final Map map = new HashMap<String, Integer>();
if( uploadRequest.getSize("file") > 0 ){
String name = uploadRequest.getFileName("file");
final String fileName = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date())+"_"+name;
InputStream is = uploadRequest.getFileAsStream("file");
final byte[] img = FileCopyUtils.copyToByteArray(is);
String sqlforInsert = "insert into TOOL_IM_FILE values (?,?,?)";
final LobHandler lobHandler = new DefaultLobHandler();
jdbcTemplate.execute(sqlforInsert, new AbstractLobCreatingPreparedStatementCallback(lobHandler) {
@Override
protected void setValues(PreparedStatement ps, LobCreator lobCreator)
throws SQLException, DataAccessException {
String sqlforMaxId = "select max(id) id from TOOL_IM_FILE";
int maxid = 0;
try {
maxid = jdbcTemplate.queryForObject(sqlforMaxId, Integer.class);
maxid+=1;
} catch (Exception e) {
maxid = 1;
}
map.put("maxid", maxid);
ps.setInt(1,maxid);
ps.setString(2, fileName);
lobCreator.setBlobAsBytes(ps, 3, img);
}
});
System.out.println(resourceRequest.getContextPath());
//2.讀出來返回存到服務器,直接用is流,獲取地址
String path = resourceRequest.getContextPath()+"/data/layimtemp/";
File pathFile = new File(path);
if(!pathFile.exists()){//判斷路徑是否存在
pathFile.mkdirs();
}
File file = new File(path+fileName);
if (!file.exists())
{
file.createNewFile(); // 如果文件不存在,則創建
}
//從數據庫讀取流刷到文件中
String sqlforimage = "select FILES from TOOL_IM_FILE where id =" + map.get("maxid");
final OutputStream os=new FileOutputStream(file);
jdbcTemplate.query(sqlforimage, new AbstractLobStreamingResultSetExtractor() {
@Override
protected void handleNoRowFound() throws DataAccessException {
System.out.println("Not Found result!");
}
@Override
protected void streamData(ResultSet rs) throws SQLException,
IOException, DataAccessException {
InputStream is = lobHandler.getBlobAsBinaryStream(rs, 1);
if (is != null) {
FileCopyUtils.copy(is, os);
}
}
} );
使用jdbcTemplate 保存圖片 至數據庫 以及 從數據庫讀取 保存到本地
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.