java如何将图片储存到数据库?

jsp上传文件通过java将其存储至mysql数据库

在开发上我们经常遇到图片文档等数据,目前有两种方式存储文件,一种就是直接存储至服务器的某个路径下,第二种就是将其存入数据库中

1.在mysql的表中建一个字段存储文件

在mysql中存储文件是以二进制来存储,在Mysql里,BLOB类型,最大长度64K,恐怕不太适合存储大一点的图像。可以使用MEDIUMBLOB(最大16M)或者LONGBLOB类型(4G)

这里我们以图片为例,数据库使用mediumblob类型,最大16M差不多了

2.导入jar包

需要使用的两个jar包

3.在form表单中使用file类型进行传值

注意: method=“post” enctype="multipart/form-data"必要

<form action="controller/add" method="post" enctype="multipart/form-data">
		<input type="submit" value="上传">
	</form>

4.在springmvc中配置器上传文件

  <!-- springmvc实现上传固定写法 -->
		<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
			<property name="defaultEncoding" value="UTF-8"></property>
			<!-- 上传单个文件最大值,单位byte -->
			<property name="maxUploadSize" value="102400"></property>
		</bean>
5.在controller中编写接收代码
package com.liu.controller;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;

import com.liu.entity.Staff;
import com.liu.service.StaffService;

@RequestMapping("controller")
@Controller
public class StaffController {
	
	@Autowired
	private StaffService staffService;

	@RequestMapping("add")
	public String add(@RequestParam("file") MultipartFile file) throws IOException {
		InputStream input = file.getInputStream();
		String fileName = file.getOriginalFilename();//获取上传文件的文件名
		System.out.println(fileName);
		ByteArrayOutputStream bos = new ByteArrayOutputStream();
		byte[] b = new byte[1024];
		int len = -1;
		while((len = input.read(b)) != -1) {
		    bos.write(b, 0, len);
		}
		staff.setUimg(bos.toByteArray());
		staffService.add(staff);
		return "add";
	}
}


对应的实体类章Uimg是byte[]类型
在这里插入图片描述


版权声明:本文为qq_44846864原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。