从浏览器上传图片到数据库的一种方式

引言:在我们写一个注册页面时,时常要传递很多信息给servlet页面,但是当我们要传递图片信息时,然后我们就发现传递图片信息和传递用户名,名字等文本信息的方法是不一样的,下面是笔者总结的一种方法

一、方法概要

传递图片的关键就是我们怎么获得从jsp页面传递来的图片的对象,在servlet 里有一个Part 类存储传递过来的图片,存储方式类似于key-value 形式存储,Part 存放于request对象里面,我们根据标签name 来获得存放图片part,然后打开图片的读取流,通过IOUtils.toByteArray(in)方法将图片存放到一个字节数组(byte[])里边,然后便可以将字节数组存放到对应javaBean对象里面存放到数据库中了。

还有一点数据库中的存放图片的字段,其类型必须为blob。

二、方法过程

1)jsp页面

<form action="doUploadServlet" method = "post" enctype = "multipart/form-data">
选择文件<input type="file" name = "file">
<input type = "submit" value = "上传">
</form>

重点是提交方式必须为post,表单数据编码需要设置为  multipart/form-data

以上两点若有写错,后台便会报错

2)servlet页面

@WebServlet("/doUploadServlet")
@MultipartConfig
public class DoUploadServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private CarDaoImpl cdi = new CarDaoImpl();
       
    public DoUploadServlet() {
        super();
      }


protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
this.doPost(request, response);
}


protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
try{
Part part = request.getPart("file");  //根据名字获取part对象
InputStream in = part.getInputStream(); //打开图片的读取流
byte[] img =  IOUtils.toByteArray(in);  //读取图片信息字节流存放到字节数组
Car c = new Car();//实例化bean 
c.setBookPicture(img);   //调用Car类的方法,注意Car类中的bookPicture需声明为byte[] 类型
cdi.addCar(c);    //调用dao层方法将对象存放到数据库


}catch(Exception e){
e.printStackTrace();
}
}

}

必须配置注解@MultipartConfig,不然会出异常Unable to process parts as no multi-part configuration has been provided

笔者第一次使用忘记配置这个注解,浪费了很多时间,(⊙﹏⊙)b!

以上就是从浏览器上传图片到数据库的一种方法

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值