在做头像上传的过程中通常是将图片保存到数据库中,这里简单介绍一中将图片保存到数据库的方法:

jsp代码:

  <div>
<input class="avatar-input" id="avatarInput" name="avatar_file" type="file" />
<button class="btn btn-primary btn-block avatar-save" type="button" id="btn">完成</button>
</div>
//显示头像
<div>
<img id="image" src="${pageContext.request.contextPath}/Personal.do?method=Pictureshow" />
</div>

js代码:

   $("#avatarInput").wrap("<form id='myupload' action='${pageContext.request.contextPath}/Personal.do?method=Pictureupload' enctype='multipart/form-data' method='post' ></form>")
var formdata;
$("#avatarInput").change(function(){
formdata=new FormData($("#myupload")[0]);
})
$("#btn").click(function(){
    $.ajax({
       type: 'post',
url: '${pageContext.request.contextPath}/Personal.do?method=Pictureuplo',
data: formdata,
async:false,
cache:false,
contentType:false,
processData:false,
success: function(data) {
alert(data);
}
});
});

注:为了方便获取返回值,我这里选择用ajax传值,根据需求而定,也可以直接用form表单传值。

Controller(头像插入):

 @RequestMapping(params = "method=Pictureupload",headers="content-type=multipart/*" ,method=RequestMethod.POST)
public @ResponseBody int Pictureupload(@RequestParam("avatar_file")MultipartFile file,HttpServletRequest request)throws Exception{
Map map=new HashMap<>();
int YGID001 = (int)request.getSession().getAttribute("ygid001");
String name = file.getOriginalFilename();
long filesize = file.getSize();
//System.err.println(filesize);
if(filesize>200000){//判断图片大小
return -1;
}
//System.out.println(file.getBytes());
map.put("in", file.getBytes());
map.put("YGID001", YGID001);
return pcs.Pictureupload(map);//pcs为service中方法。
}

Controller(头像显示):

     @RequestMapping(params = "method=Pictureshows")
public ResponseEntity<byte[]> Pictureshow(HttpServletRequest request)throws Exception{
int YGID001 = (int)request.getSession().getAttribute("ygid001");
List<PictureShow> list=pcs.Pictureshows(YGID001);//根据员工号查找头像
byte[] bytes=list.get(0).getPortrait();
HttpHeaders headers = new HttpHeaders();
try {
headers.setContentType(MediaType.IMAGE_PNG);
headers.setContentDispositionFormData("attachment", new String("头像".getBytes("GBK"),"ISO8859-1"));
} catch (Exception e) {
e.printStackTrace();
}
return new ResponseEntity<byte[]>(bytes,headers,HttpStatus.OK);
}

sql:

<!--  头像插入   -->
insert into yg01 (SKYG018) values(#{in}) where YGID001=#{YGID001}
<!-- 头像显示 -->
select portrait from yg where YGID001=#{YGID001}

注:数据库字段类型设置为以下中的一种:TinyBlob 最大255 、 Blob 最大65K、 MediumBlob 最大16M、LongBlob  最大4G。

Java将头像图片保存到MySQL数据库的更多相关文章

  1. php将图片以二进制保存到mysql数据库并显示

    一.存储图片的数据表结构: -- -- 表的结构 `image` -- CREATE TABLE IF NOT EXISTS `image` ( `id` int(3) NOT NULL AUTO_I ...

  2. Python实现将图片以二进制格式保存到MySQL数据库中,以及取出:

    创建数据库表格式: CREATE TABLE photo ( photo_no int(6) unsigned NOT NULL auto_increment, image MEDIUMBLOB, P ...

  3. Python scrapy爬虫数据保存到MySQL数据库

    除将爬取到的信息写入文件中之外,程序也可通过修改 Pipeline 文件将数据保存到数据库中.为了使用数据库来保存爬取到的信息,在 MySQL 的 python 数据库中执行如下 SQL 语句来创建 ...

  4. node 爬虫 --- 将爬取到的数据,保存到 mysql 数据库中

    步骤一:安装必要模块 (1)cheerio模块 ,一个类似jQuery的选择器模块,分析HTML利器. (2)request模块,让http请求变的更加简单 (3)mysql模块,node连接mysq ...

  5. 使用官方组件下载图片,保存到MySQL数据库,保存到MongoDB数据库

    需要学习的地方,使用官方组件下载图片的用法,保存item到MySQL数据库 需要提前创建好MySQL数据库,根据item.py文件中的字段信息创建相应的数据表 1.items.py文件 from sc ...

  6. 利用session_set_save_handler()函数将session保存到MySQL数据库中

    PHP保存session默认的是采用的文件的方式来保存的,这仅仅在文件的空间开销很小的windows上是可以采用的,但是如果我们采用uinx或者是liux上的文件系统的时候,这样的文件系统的文件空间开 ...

  7. 关于阿里云centos 2.6下手机表情输入后无法保存到mysql数据库的问题调研及mysql版本从5.1升级到5.7的全过程纪要

    近日在开发手机app的评论功能时,输入表情文字,保存后提示数据库保存失败.错误日志片段如下 caused by: java.sql.SQLException: Incorrect string val ...

  8. 信息技术手册可视化进度报告 基于BeautifulSoup框架的python3爬取数据并连接保存到MySQL数据库

    老师给我们提供了一个word文档,里面是一份信息行业热词解释手册,要求我们把里面的文字存进数据库里面,然后在前台展示出来. 首先面临的问题是怎么把数据导进MySQL数据库,大家都有自己的方法,我采用了 ...

  9. python之scrapy爬取数据保存到mysql数据库

    1.创建工程 scrapy startproject tencent 2.创建项目 scrapy genspider mahuateng 3.既然保存到数据库,自然要安装pymsql pip inst ...

随机推荐

  1. hibernate持久化框架

    Hibernate是一个优秀的持久化框架 瞬时状态:保存在内存的程序数据,程序退出后,数据就消失了,称为瞬时状态 持久状态:保存在磁盘上的程序数据,程序退出后依然存在,称为程序数据的持久状态 持久化: ...

  2. java多线程-消费者和生产者模式

    /* * 多线程-消费者和生产者模式 * 在实现消费者生产者模式的时候必须要具备两个前提,一是,必须访问的是一个共享资源,二是必须要有线程锁,且锁的是同一个对象 * */ /*资源类中定义了name( ...

  3. centos7安装httpd和php

    centos7许多命令都变了,又要重新记了. centos7默认安装了httpd吧?记不清了,看一下: rpm -qa |grep httpd 没有的话,安装一下吧. yum -y install h ...

  4. IDEA第一章----下载安装idea,设置背景字体编码,配置JDK/Maven

    写在前面的话: 在程序的世界混迹了5年+,认真过,蹉跎过,回首突然发现自己得到的东西却很少.于是想写点东西记录下学习.工作抑或生活的种种,人生不只是眼前的苟且还有诗和远方,任沧海桑田韶华不在,愿无岁月 ...

  5. JS模式--装饰者模式(用AOP动态改变函数的参数)

    Function.prototype.before = function (beforefn) { var _self = this; return function () { beforefn.ap ...

  6. 使用Spigot搭建MineCraft服务器

    MineCraft 这种游戏还是人多了好玩,以前的服务器放在同学的Windows电脑上,每次我们想玩的时候就让让去打开,但是总是有一些原因,想玩的时候服务器没开着,不想玩的时候服务器空开着费电.昨天一 ...

  7. web安全—浏览器的进制

    浏览器的进制 字符的ascii码值可以转化为进制形式.可以用来绕过XSS filter. HTML属性值中的进制使用 .十进制使用a 表示,&#作为前缀,;作为后缀,后缀也可以没有. 如果要使 ...

  8. Charles抓取https请求详解

    大家好,我是TT,互联网测试行业多年,没有牛逼的背景,也没有什么可炫耀的,唯独比他人更努力,在职场打拼.遇到过的坑,走过的弯路,愿意与大家分享,分享自己的经验,少走弯路.首发于个人公众号[测试架构师] ...

  9. 从零开始构建一个的asp.net Core 项目(二)

    接着上一篇博客继续进行.上一篇博客只是显示了简单的MVC视图页,这篇博客接着进行,连接上数据库,进行简单的CRUD. 首先我在Controllers文件夹点击右键,添加->控制器 弹出的对话框中 ...

  10. ECMAScript6 规范

    本文探讨如何将ES6的新语法,运用到编码实践之中,与传统的JavaScript语法结合在一起,写出合理的.易于阅读和维护的代码. 多家公司和组织已经公开了它们的风格规范,具体可参阅http://jsc ...