java 二进制图片上传_Spring MVC上传图片,Java二进制图片写入数据库,生成略缩图...
背景描述:最近做到一個項目,有個商品登記功能。登記的信息包括:基本信息若干(文字信息);圖片信息,要求將圖片保存到數據表中的image字段(sql server 數據庫)
步驟:1.將圖片上傳到服務器的一個磁盤目錄下。
2.將剛才上傳好的圖片寫入數據庫image字段。
上傳的支持。
jsp 頁面:
inputtype="file"name="image" />
="submit"value="上傳"class="btn4" />
spring_mvc.xml配置
beanid="multipartResolver"class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
bean>
Controller:
@RequestMapping("/doUploadFile")publicModelAndView doUploadFile(HttpServletRequest request,HttpServletResponse response,HttpSession session)throwsException,IOException {//轉型為MultipartHttpRequest:
MultipartHttpServletRequest multipartRequest =(MultipartHttpServletRequest) request;獲得文件:
MultipartFile file = multipartRequest.getFile("image");獲得文件名:
String filename =file.getOriginalFilename();
InputStream input=file.getInputStream();String path = "D:/goodsImages";下邊這個path是寫在配置文件里邊的,方便修改,這個方法很長但或得的結果就是路勁D:/goodsImages
String path =ConfigConstants.getInstance()
.get("goods.uploadImage.dir");
File savePath= newFile(path);if (!savePath.exists()) { savePath.mkdir();
}
SaveFileFromInputStream(input,savePath.toString(),filename);
String result= "上傳成功!";
ModelAndView modelAndView= new ModelAndView("goods/uploadSuccess");
modelAndView.addObject("result",result);
modelAndView.addObject("filename"returnmodelAndView;
}
如此上傳就搞定了。
上傳文件補充,另一個方法:
1.項目中導入? jar 包 cos.jar
2.表單:enctype="multipart/form-data"
3.處理方法:主要用到 ?MultipartRequest 類,詳細情況查看:http://www.servlets.com/cos/javadoc/com/oreilly/servlet/MultipartRequest.html
@RequestMapping(value = "/uploadImage.do"public String uploadImage(HttpServletRequest request) Exception {
MultipartRequest mr= null;int maxPostSize = 1 * 100 * 1024;
mr=new MultipartRequest(request,"E:\\goodsImages",maxPostSize,"GBK"return ;
}
二、生成略縮圖。
public voidcreateIcon() {try{
File fiBig= new File("D:/log/tickit.png"); 大圖文件
File foSmall = new File("D:/log/tickitIcon.png"); 將要轉換出的小圖文件
AffineTransform transform= AffineTransform();讀取圖片
BufferedImage bis =ImageIO.read(fiBig);獲得圖片原來的高寬
int w =bis.getWidth();int h =bis.getHeight();double scale = (double) w /h;等比例縮放int nowWidth = 120;int nowHeight = (nowWidth * h) /w;if (nowHeight > 120) {
nowHeight= 120;
nowWidth= (nowHeight * w) /h;
}double sx = (double) nowWidth /double sy = (double) nowHeight /h;
transform.setToScale(sx,sy);
AffineTransformOp ato= new AffineTransformOp(transform,);
BufferedImage bid= BufferedImage(nowWidth,nowHeight,BufferedImage.TYPE_3BYTE_BGR);
ato.filter(bis,bid);
ImageIO.write(bid,"png"catch(Exception e) {
e.printStackTrace();
}
}
三、圖片寫入數據庫。
1.圖片實體類的 圖片字段(picture) 用? byte[]類型
@Entity
@Table(name= "spaq_pic")classGoodsPic {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name= "pic_id"privateLong picId;
@Column(name= "pic_name"String picName;
@Column(name= "pic_descr"String picDescr;
@Column(name= "picture"private byte[] picture;//省略其他字段及get,set方法
}
2.代碼,讀取本地圖片儲存在byte[]中,付給實體類的picture字段,調用 hibernate的save方法保存
/*** hibernate保存圖片到數據表*/@Transactional(readOnly= falsevoid hibsaveImage(GoodsPic gp,String path) {GoodsPic為圖片實體類,path為圖片所在磁盤的路徑
{
InputStream in= ;
in= FileInputStream(path);byte[] b = new [in.available()];
in.read(b);
in.close();
gp.setPicture(b);
myDao.save(gp);
}(Exception e) {
e.printStackTrace();
}
}
[spring如何啟動的?這里結合spring源碼描述了啟動過程](https://www.cnblogs.com/demingblog/p/7443714.html)
[SpringMVC是怎么工作的,SpringMVC的工作原理](https://www.cnblogs.com/demingblog/p/9925268.html)
[spring 異常處理。結合spring源碼分析400異常處理流程及解決方法](https://www.cnblogs.com/demingblog/p/9218271.html)
[Mybatis Mapper接口是如何找到實現類的-源碼分析](https://www.cnblogs.com/demingblog/p/9544774.html)
[使用Netty實現HTTP服務器](https://www.cnblogs.com/demingblog/p/9970772.html)
[Netty實現心跳機制](https://www.cnblogs.com/demingblog/p/9957143.html)
[Netty系列](https://www.cnblogs.com/demingblog/p/9912099.html)
相關文章
總結
如果覺得編程之家網站內容還不錯,歡迎將編程之家網站推薦給程序員好友。
本圖文內容來源于網友網絡收集整理提供,作為學習參考使用,版權屬于原作者。
如您喜歡交流學習經驗,點擊鏈接加入交流1群:1065694478(已滿)交流2群:163560250
總結
以上是生活随笔為你收集整理的java 二进制图片上传_Spring MVC上传图片,Java二进制图片写入数据库,生成略缩图...的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: for循环 php 增加数组维数_PHP
- 下一篇: 海思芯片硬件java加速_海思Hi371
