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版权协议,转载请附上原文出处链接和本声明。