java将图片保存进mysql_Java存储图片到Mysql
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
【1】视图层
action="${ctx}/web/UserInforServlet?method=userInforServlet" >
更换头像
立即提交
重置
var layer,upload,form;
//1-页面数据加载
$(function () {
//【1】加载&初始化layui模块-弹出层与table数据表格
layui.use(["layer", "upload","form"], function () {
layer = layui.layer;
laydate=layui.laydate;
upload = layui.upload;//layui的上传
form= layui.form;
uploadImage();
});
});
function uploadImage(){
var $ = layui.jquery;
upload.render({
elem: "#upImage"
,auto: false
,size:1024
,choose: function(obj){//使用choose选择文件后的回调函数
//预读本地文件示例,不支持ie8
obj.preview(function(index, file, result){
$("#userImge").attr("src",result); //图片链接(base64)
});
}
});
}
//提交form表单
$("#saveUserInfor").click(function(){
$("#frregister").ajaxSubmit(function(data) {
if(data="1"){
layer.msg("成功!");
}
});
});
【2】控制器
publicvoid userInforServlet(HttpServletRequest request,HttpServletResponseresponse) throws IOException {
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=UTF-8");//处理响应编码
Map map=new HashMap();
UserDetail userDetail=new UserDetail();
try {
//【1】解析数据
DiskFileItemFactory fac=new DiskFileItemFactory();
int sizeThreshold=1024*1024*10; //10MB
fac.setSizeThreshold(sizeThreshold);
fac.setRepository(new File(System.getProperty("java.io.tmpdir")));
ServletFileUpload upload=new ServletFileUpload(fac);//文件上传解析器
upload.setHeaderEncoding("utf-8");
Listlist=upload.parseRequest(request);
//【2】遍历集合
for(FileItem item :list){
//1)如果当前FileItem对象是普通项
if(item.isFormField()){
map.put(item.getFieldName(),item.getString());
}else{
//1)如果当前FileItem对象是上传项
//2)判断是否存在有该文件夹
String realPath=("D:/Mytouimage");
File uploadMkdir=new File(realPath);
if(!uploadMkdir.exists()){
uploadMkdir.mkdir();
}
//如果fileitem中封装的是上传文件,得到上传的文件名称,
String fileName = item.getName();//上传文件的名
//多个文件上传时,没有上传内容的问题异常处理
if(fileName==null||"".equals(fileName.trim())){ continue;
}
fileName =fileName.substring(fileName.lastIndexOf("\\")+1);
InputStream is=item.getInputStream();
File file=new File(realPath+"/"+fileName);
//3)先在本地存储图片,再读取保存到数据库
if(!file.isDirectory()){
userDetail.setImageName(realPath+"/"+item.getName());
OutputStream os=new FileOutputStream(file);
//IOUtils拷贝流
IOUtils.copy(is,os);
//关闭资源
IOUtils.closeQuietly(is);
IOUtils.closeQuietly(os);
item.delete();//删除处理文件上传时生成的临时文件
}
}
}
BeanUtils.populate(userDetail,map);
int flag =ids.insert(userDetail);
if(flag==1){
response.getWriter().write("1");
response.getWriter().close();
}
}
【3】dao层
@Override
publicint insert(UserDetail t) {
int flag=0;
InputStream fis=null;
String insert="INSERT INTOr_userdetail(userImage,imageName)" +
"VALUES(?,?);";
try {
con=JDBCUtil.getConnection();
ps=con.prepareStatement(insert);
if(t.getImageName()!=null){
//读取本地图片
fis=new FileInputStream(t.getImageName());
}
//将流写入Mysql
ps.setBinaryStream(1, fis, fis.available());
ps.setString(2, t.getImageName());
flag=ps.executeUpdate();
} catch (SQLException e) {
//TODO Auto-generated catch block
e.printStackTrace();
}
catch (FileNotFoundException e){
//TODO Auto-generated catch block
e.printStackTrace();
}
catch (IOException e) {
//TODO Auto-generated catch block
e.printStackTrace();
}
return flag;
}
【4】po层
publicclass UserDetail implements Serializable{
publicstaticfinallongserialVersionUID = 42L;
privateintuserDetailID;
private Blob userImage;
private String imageName;
public Blob getUserImage() {
returnuserImage;
}
publicvoid setUserImage(Blob userImage) {
this.userImage = userImage;
}
public String getImageName() {
returnimageName;
}
publicvoid setImageName(String imageName) {
this.imageName = imageName;
}
}
【5】总结
1)注意上传图片是form表单一定要加method="post" enctype="multipart/form-data" ,否则无法将数据上传到服务器。
2)Mysql存储图片的数据类型
TinyBlob最大 255
Blob 最大 65K
MediumBlob 最大 16M
LongBlob 最大 4G
3)在dao层向数据库添加数据
使用ps.setBinaryStream(1,fis, fis.available());
【6】显示图片
publicvoid selectUserImage(HttpServletRequest request, HttpServletResponseresponse) {
String id=request.getParameter("userID");
if(id!=null){
int userID=Integer.parseInt(id);
UserDetail userDetail=ids.findByUserid(userID);
BufferedOutputStream bufos=null;
BufferedInputStream bufis=null;;
try {
if(userDetail.getUserImage()!=null){
//读取缓冲区 userDetail.getUserImage().getBinaryStream()--读取源
bufis=new BufferedInputStream(userDetail.getUserImage().getBinaryStream());
//输出缓冲区 response.getOutputStream()--输出目的
bufos = new BufferedOutputStream(response.getOutputStream());
byte[] bt=newbyte[1024];
//【6】初始化实际长度的数组的长度
int count=0;
//【7】循环读取多媒体文件数据,将其读取的数据存储在byte数组
while((count=bufis.read(bt))!=-1){
//【8】截取数组从零到实际长度,循环写入多媒体的目标文件
bufos.write(bt,0,count);
}
}
bufis.close();
bufos.close();
} catch (SQLException e) {
//TODO Auto-generated catch block
e.printStackTrace();
}
catch (IOException e) {
//TODO Auto-generated catch block
e.printStackTrace();
}
}
}
java将图片保存进mysql_Java存储图片到Mysql相关推荐
- OpenCV技巧 | 常用格式图片保存为透明背景图片(附Python源码)-教你轻松制作Logo
导读 本文主要介绍使用OpenCV将常用格式图片保存为透明背景图片的方法与实现代码. 实现目标 本文的目标有如下两个: ① 将常见格式[jpg/png/bmp]白色背景图片转换保存为透明背景图片: ② ...
- java 图片存进mysql_Java操作mysql存储图片
http://bbs.chinaunix.net/archiver/tid-2289421.html 1把图片当成一个二进制流就可以了 .mysql中有可以存储很大的2进制流文件.用的类型是: 我们要 ...
- delphi 安卓图片保存数据库_delphi 把图片存入数据库
procedure TForm1.Button1Click(Sender: TObject); // 插入图片过程 var Stream:TMemoryStream; begin try Stream ...
- mysql图片类型_MySQL里存储图片的是什么数据类型?
root@ytt:/var/lib/mysql-files# for i in `seq 1 100`; do cp 微信图片_20190711095019.jpg "$i".jp ...
- 安卓开发下载图片保存到手机后图片没在相册看到的问题
今天我们用户反馈关于图片下载保存后,图片在相册中一直找不到,但是在文件的路径里是可以看到的! 解决: 其实我们只要保存图片成功后执行刷新一下相册就可以啦!代码贴上! MediaScannerConne ...
- Android 实现拍照功能,并将图片保存到本地存储
博主前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住也分享一下给大家,
- android下保存图片到mySQL_android将图片保存进数据库
最近有朋友项目需要保存图片到本地数据库,问我怎么做,刚好我之前接触过,其实就是简单的base64编码转换,下面介绍超详细超简单demo: 首先放图,no图no bb: 效果图.png 第一步:创建工程 ...
- matlab修改图像分辨率_[转载]Matlab图片保存指定分辨率(图片dpi设置)
登录后查看更多精彩内容~ 您需要 登录 才可以下载或查看,没有帐号?立即注册 x 本帖最后由 haobang008 于 2016-7-19 14:38 编辑 先附上效果对比,第一张图是300dpi设置 ...
- css禁止图片保存,CSS中的图片保存方法
"css中的图片"指的就是镶在CSS样式表中的图片.在我们用在浏览器保存网页时,很多时候,下载网页里的图片都下载不到,这样的话就会使网页非常不美观.所以,今天小编就给大家介绍集中保 ...
最新文章
- R语言读写二进制文件:WriteBin()、readBin()
- css超出一行添加省略号属性
- 抚州虚拟服务器,南通虚拟主机_南通云虚机_南通主机申请_南通网站空间_爱名网(www.22.cn)...
- java面试题十八 switch一个考题
- ai人工智能编程_从人工智能动态编程:Q学习
- DllImport的用法
- docker部署redis集群_Docker部署Redis集群----第六节(docker-redis-sentinel集群的机制)...
- Jmeter系列之接口依赖
- java日期加一天_Java 关于日期加一天(日期往后多一天)
- pycharm 虚拟环境virtualenv迁移到别的机器 无法读取包的问题
- ACL'22 | 使用对比学习增强多标签文本分类中的k近邻机制
- 在EF4.1的DBContext中实现事务处理(BeginTransaction)和直接执行SQL语句的示例
- 求 s = a+aa+aaa+… …+aaa…a的值,其中a是一个数字
- mac使用word怎么显示左侧目录树
- 学医后才知道的小知识...
- android调用微信视频电话,微信视频通话录屏如何操作
- c语言什么意思 app 视频 新闻,开发新闻资讯APP需要哪些功能?
- win10用户权限设置计算机管理权限,win10系统怎么取得完美管理员权限
- 双目立体视觉简单介绍
- 数字世界的积木-从MOS管搭反相器,与非门,锁存器,触发器
热门文章
- 非文学翻译理论与实践_北外“欧洲非通用语文学翻译与研究中心”正式成立
- java request payload_java 模拟 post request payload
- js 封装经纬度成json_R实现地理位置与经纬度相互转换
- 20220129刷题--第4题-- cookie
- JAVA版游戏下载_我的世界Java版20w51a
- 万用表怎么测量电池容量_家电常识丨万用表的测量应用学习
- python转盘抽奖概率_转盘指定概率抽奖
- HH的项链 HYSBZ - 1878 (莫队/ 树状数组)
- Asp.Net 中Report Service (RDLC)动态绑定数据-学习笔记
- python3安装后无法使用退格键的问题