从浏览器上传图片到数据库的一种方式
2017-11-20 17:20
239 查看
引言:在我们写一个注册页面时,时常要传递很多信息给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!
以上就是从浏览器上传图片到数据库的一种方法
一、方法概要
传递图片的关键就是我们怎么获得从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!
以上就是从浏览器上传图片到数据库的一种方法
相关文章推荐
- SpringMVC 上传文件或图片并以二进制流的方式存到数据库
- ASP.NET 上传图片至数据库并读取图片显示--二进制流方式
- Flex上传图片,将图片保存以二进制流的方式保存到数据库。
- WPF用流的方式上传/显示/下载图片文件(保存在数据库)
- Android选取图片并上传的一种实现方式
- Struts2中图片以base64方式上传至数据库
- WPF用流的方式上传/显示/下载图片文件(保存在数据库)
- 通过input上传图片,判断不同浏览器及图片类型和大小的js代码
- 建议DuDu:实现上传图片能够以目录方式存放.
- Struts2 图片上传 hibernate保存图片于数据库 。。
- 关于图片或者文件在数据库的存储方式归纳
- 浏览器识别本地上传图片(转)
- 将上传图片打上防伪图片水印并写入数据库
- asp.net下CKFinder IE9以下浏览器中上传图片文件时提示“无效文件名或文件夹名称”的解决方法
- Get、Post(HTTP中最常用的请求方式 使用ASIHTTPRequest)----例如:登录、上传图片(调用手机相册 UIImage 转为data)
- 图片上传到数据库的总结
- 使用Vue实现图片上传的三种方式
- DataGrid中,读取数据库中的图片并绑定数据列或磁盘目录中的图片,用输出流方式
- Java-Maven项目引入UEditor图片上传组件jar包类库的5种方式
- 上传图片、word等文件到数据库