本文主要介绍了MySQL+SSM+Ajax上传图片问题。具有很好的参考价值。下面跟着小编一起来看下吧

第一次写上传图片的代码,碰到很多问题。昨天做了整整一天,终于在晚上的时候成功了。大声欢呼。

但是,做完之后,还是有很多问题想不通。所以在这里也算是写个笔记,日后忘记了可以回顾,也算请教各路朋友。(^_^)

Q.1. 网上说Ajax不能上传文件,但是这个说法并不是很多,也还是有蛮多通过Ajax上传文件的分享。

我也没有通过Ajax做出来,最后是通过AjaxSubmit这个方法写的。

Q.2. AjaxSubmit这个方法对文件上传的大小有默认限制吧。我选择大于100KB的文件上传就不能成功,小于100KB的就可以成功。

上传大于100KB的时候,浏览器console返回下面的提示。说明他还是执行了ajaxSubmit的success方法,并返回textStatus的值为success,但是XMLHttpRequest, 和 errorThrown的responseText返回的HTML代码内容是我在spring-web.xml配置的异常处理视图网页。

js代码(提交表单事件):function postImg(){

if ($.trim($("#imgFile").val()) == "") {

alert("请选择图片!");

return;

}

console.log($("#imgFile")[0].files[0].size);//小于100*1024,下面的请求就可以成功

var option = {

url : '/cloudnote/user/insertUserPhoto.do',

type : 'POST',

// dataType : 'json',

headers : {"ClientCallMode" : "ajax"}, //添加请求头部

success : function(XMLHttpRequest, textStatus, errorThrown){

console.log(XMLHttpRequest);

console.log(textStatus);

console.log(errorThrown);

console.log("前端输出上传成功");

$("#imgClose").click();

},

error: function(XMLHttpRequest, textStatus, errorThrown) {

console.log(XMLHttpRequest);

console.log(textStatus);

console.log(errorThrown);

console.log("前端输出上传失败");

}

};

$("#imgForm").ajaxSubmit(option);

return false;

}

×

修改头像

关闭

上传

下面是后台的java代码(Controller)//更新用户头像

@RequestMapping(value="/insertUserPhoto.do",method = RequestMethod.POST)

public void insertUserPhoto(

HttpServletRequest req, HttpServletResponse res){

System.out.println("----- 插入图片 -------");

try{

String id = req.getParameter("userId");

System.out.println(id);

MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) req;

MultipartFile file = multipartRequest.getFile("imgFile");

byte[] photo = file.getBytes();

boolean result = serv.insertUserPhoto(id, photo);

res.setContentType("text/html;charset=utf8");

res.getWriter().write("result:" + result);

}catch(Exception e){

e.printStackTrace();

}

System.out.println("----- 插入图片end -------");

}

/**

* 读取用户头像

* @param req

* @param res

*/

@RequestMapping(value="/readPhoto.do", method=RequestMethod.GET)

public void readPhoto(HttpServletRequest req, HttpServletResponse res){

System.out.println("------readPohto-----");

String id = Utils.getSessionUserId(req);

try {

User user = serv.selectUserPhoto(id);

res.setContentType("image/jpeg");

res.setCharacterEncoding("utf-8");

OutputStream outputStream = res.getOutputStream();

InputStream in = new ByteArrayInputStream(user.getPhoto());

int len = 0;

byte[] buf = new byte[1024];

while((len = in.read(buf,0,1024)) != -1){

outputStream.write(buf, 0, len);

}

outputStream.close();

} catch (IOException e) {

e.printStackTrace();

}

System.out.println("-----readPohto end-----");

return;

}

Service实现类//查找用户图片(头像)

public User selectUserPhoto(String id) throws ImageException {

User user = userDao.findUserById(id);

if(user == null){

throw new UserNameException("用户名不存在!");

}

Map data = userDao.selectUserPhoto(id);

System.out.println(data);

user.setPhoto((byte[]) data.get("photo"));

return user;

}

//更新用户图片(头像)

public boolean insertUserPhoto(String userId, byte[] photo) throws ImageException, UserNameException {

if(userId == null || userId.trim().isEmpty()){

throw new UserNameException("用户id不存在");

}

User user = userDao.findUserById(userId);

if(user == null){

throw new UserNameException("用户不存在");

}

user.setPhoto(photo);

int n = userDao.updateUserPhoto(user);

System.out.println("插入图片:" + n);

return n==1?true:false;

}

实体类User的photo 是 byte[] 类型的;

数据库的photo是 longblob:

mapper映射器:

UPDATE user set id = #{id}, photo = #{photo,jdbcType=BLOB}

WHERE id = #{id}

SELECT id as id, photo as photo from user

WHERE id=#{id}

Spring-web.xml配置

100000

UTF-8

ssm 上传图片到mysql_MySQL+SSM+Ajax上传图片问题的分析(图)相关推荐

  1. vue用form上传图片_vuejs使用FormData,ajax上传图片文件

    我相信很多使用vuejs的朋友,都有采用ajax上传图片的需求,因为前后端分离后,我们希望都能用ajax来解决数据问题,传统的表单提交会导致提交成功后页面跳转,而使用ajax能够无刷新上传图片等文件. ...

  2. C#也能PS图片,还能为网站Ajax上传图片同时生成微缩图(附Demo)

    C#也能PS图片,还能为网站Ajax上传图片同时生成微缩图(附Demo) 本文旨在与各位朋友们分享我是如何在项目中用C# "ps图片" 为网站生成同比例微缩图的解决方案.如有不足之 ...

  3. 移动端压缩并ajax上传图片解决方案

    移动端压缩并ajax上传图片解决方案 参考文章: (1)移动端压缩并ajax上传图片解决方案 (2)https://www.cnblogs.com/norm/p/6188318.html 备忘一下.

  4. 原生ajax传值php,原生ajax上传图片,php后台处理总结

    原生ajax上传图片,php后台处理总结 这篇文章发布于 2018/10/03,归类于 后端数据库等 标签: 原生ajax上传图片,php后台处理图片上传 开始做图片上传,发现之前的处理方式基本忘光了 ...

  5. ajax上传图片java6,java ajax上传图片返回json数

    java ajax上传图片返回json数 [2021-02-10 00:12:56]  简介: 解决java的ajax提交返回值中文乱码的方法:1.在RequestMapping的并发配置中加代码[p ...

  6. ajax图片预览,Ajax 上传图片并预览的简单实现

    1. 直接上最简单的 一种 ajax 异步上传图片,并预览 html: 图片上传 | cookie file: desc: function upload() { $.ajaxFileUpload({ ...

  7. thinkphp5通过ajax上传图片并预览

    thinkphp5通过ajax上传图片并预览 一.具体需求如图所术: 二.html代码: 三.js代码 四.控制器php代码: 一.具体需求如图所术: 二.html代码: <form class ...

  8. php ajax多图上传预览,Ajax上传图片及先预览功能的实现方法

    最近有几个小项目用到了easyUI,一开始决定使用easyUI就注定了项目整体上前后端分离,基本上所有的请求都采用Ajax来完成.在文件上传的时候用到了Ajax上传文件,以及图片在上传之前的预览效果, ...

  9. canvas使用Ajax上传图片PHP,使用ajax上传图片,并且使用canvas实现出上传进度效果...

    前端代码: 使用ajax上传图片,并使用canvas实现出上传进度效果 #myImg { border: 1px solid gray; border-radius: 8px; position: a ...

最新文章

  1. Android多媒体之GLES2战记第四集--移形换影
  2. oracle 偶数与奇数,在PL / SQL中计算数字中的奇数和偶数
  3. C++实现tree树(附完整源码)
  4. win7 / mysql-8.0.11-winx64 安装的测坑步骤
  5. eclipse插件:打开选中文件所在的目录
  6. css:before和after中的content属性
  7. 贪婪洞窟2服务器维护,12月19日贪婪洞窟2停服维护公告 贪婪洞窟2更新了什么
  8. RedHat6.4安装IBM MQ7.5
  9. (转载) linux安装JDK
  10. alexa/alexa-avs-sample-app Windows 安装教程
  11. android真机调试工具,ADB 安卓真机调试工具
  12. magick 包: 在R中进行高级图片处理
  13. 《游戏系统设计三》游戏服务器线上出bug,怎么办?急,在线等!热更新
  14. 用python写脚本控制电脑息屏唤醒_Python制作小脚本,一键可以让你同事的电脑在你指定时间关机...
  15. Note Of Effective C++ 、More Effective C++ And Effective Modern C++
  16. 花都平安保险应该找谁?
  17. Mac/Linux/Ubuntu下 视频 显示双语/中英字幕 的方法
  18. Android 分享到LINE
  19. 全球与中国手持式凿岩机市场供需情况分析及十四五趋势预测报告2022-2027年版
  20. ORA-29491: invalid table for chunking 错误记录

热门文章

  1. w3c标准 - Css - (4)CSS定位方案
  2. 内网穿透远程控制Windows主机
  3. iOS 13 LaunchScreen.storyboard 启动图屏幕适配
  4. vue.js 天气插件_天气检查我的项目以学习Vue.js
  5. (转)一个屌丝的养龟经历
  6. Oracle之常用内置函数
  7. java 主动抛出 段错误_分段错误的原因?
  8. 什么是openssl
  9. SqlMDF数据提取工具
  10. appnode面板中php命令 appnode-php80换成php