该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

【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相关推荐

  1. OpenCV技巧 | 常用格式图片保存为透明背景图片(附Python源码)-教你轻松制作Logo

    导读 本文主要介绍使用OpenCV将常用格式图片保存为透明背景图片的方法与实现代码. 实现目标 本文的目标有如下两个: ① 将常见格式[jpg/png/bmp]白色背景图片转换保存为透明背景图片: ② ...

  2. java 图片存进mysql_Java操作mysql存储图片

    http://bbs.chinaunix.net/archiver/tid-2289421.html 1把图片当成一个二进制流就可以了 .mysql中有可以存储很大的2进制流文件.用的类型是: 我们要 ...

  3. delphi 安卓图片保存数据库_delphi 把图片存入数据库

    procedure TForm1.Button1Click(Sender: TObject); // 插入图片过程 var Stream:TMemoryStream; begin try Stream ...

  4. mysql图片类型_MySQL里存储图片的是什么数据类型?

    root@ytt:/var/lib/mysql-files# for i in `seq 1 100`; do cp 微信图片_20190711095019.jpg "$i".jp ...

  5. 安卓开发下载图片保存到手机后图片没在相册看到的问题

    今天我们用户反馈关于图片下载保存后,图片在相册中一直找不到,但是在文件的路径里是可以看到的! 解决: 其实我们只要保存图片成功后执行刷新一下相册就可以啦!代码贴上! MediaScannerConne ...

  6. Android 实现拍照功能,并将图片保存到本地存储

    博主前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住也分享一下给大家,

  7. android下保存图片到mySQL_android将图片保存进数据库

    最近有朋友项目需要保存图片到本地数据库,问我怎么做,刚好我之前接触过,其实就是简单的base64编码转换,下面介绍超详细超简单demo: 首先放图,no图no bb: 效果图.png 第一步:创建工程 ...

  8. matlab修改图像分辨率_[转载]Matlab图片保存指定分辨率(图片dpi设置)

    登录后查看更多精彩内容~ 您需要 登录 才可以下载或查看,没有帐号?立即注册 x 本帖最后由 haobang008 于 2016-7-19 14:38 编辑 先附上效果对比,第一张图是300dpi设置 ...

  9. css禁止图片保存,CSS中的图片保存方法

    "css中的图片"指的就是镶在CSS样式表中的图片.在我们用在浏览器保存网页时,很多时候,下载网页里的图片都下载不到,这样的话就会使网页非常不美观.所以,今天小编就给大家介绍集中保 ...

最新文章

  1. R语言读写二进制文件:WriteBin()、readBin()
  2. css超出一行添加省略号属性
  3. 抚州虚拟服务器,南通虚拟主机_南通云虚机_南通主机申请_南通网站空间_爱名网(www.22.cn)...
  4. java面试题十八 switch一个考题
  5. ai人工智能编程_从人工智能动态编程:Q学习
  6. DllImport的用法
  7. docker部署redis集群_Docker部署Redis集群----第六节(docker-redis-sentinel集群的机制)...
  8. Jmeter系列之接口依赖
  9. java日期加一天_Java 关于日期加一天(日期往后多一天)
  10. pycharm 虚拟环境virtualenv迁移到别的机器 无法读取包的问题
  11. ACL'22 | 使用对比学习增强多标签文本分类中的k近邻机制
  12. 在EF4.1的DBContext中实现事务处理(BeginTransaction)和直接执行SQL语句的示例
  13. 求 s = a+aa+aaa+… …+aaa…a的值,其中a是一个数字
  14. mac使用word怎么显示左侧目录树
  15. 学医后才知道的小知识...
  16. android调用微信视频电话,微信视频通话录屏如何操作
  17. c语言什么意思 app 视频 新闻,开发新闻资讯APP需要哪些功能?
  18. win10用户权限设置计算机管理权限,win10系统怎么取得完美管理员权限
  19. 双目立体视觉简单介绍
  20. 数字世界的积木-从MOS管搭反相器,与非门,锁存器,触发器

热门文章

  1. 非文学翻译理论与实践_北外“欧洲非通用语文学翻译与研究中心”正式成立
  2. java request payload_java 模拟 post request payload
  3. js 封装经纬度成json_R实现地理位置与经纬度相互转换
  4. 20220129刷题--第4题-- cookie
  5. JAVA版游戏下载_我的世界Java版20w51a
  6. 万用表怎么测量电池容量_家电常识丨万用表的测量应用学习
  7. python转盘抽奖概率_转盘指定概率抽奖
  8. HH的项链 HYSBZ - 1878 (莫队/ 树状数组)
  9. Asp.Net 中Report Service (RDLC)动态绑定数据-学习笔记
  10. python3安装后无法使用退格键的问题