一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - MySQL+SSM+Ajax上傳圖片問題

MySQL+SSM+Ajax上傳圖片問題

2020-08-29 12:05梁小濤 Java教程

本文主要介紹了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配置的異常處理視圖網頁。

MySQL+SSM+Ajax上傳圖片問題

js代碼(提交表單事件):

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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;
}

前端HTML表單:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<form id="imgForm" >
  <div class="modal-content">
   <div class="modal-header">
   <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
   <h4 class="modal-title" id="myModalLabel">修改頭像</h4>
  </div>
  <div class="modal-body">
    <input type="file" id="imgFile" name="imgFile"/>
   <input id="imgId" name="userId" value="${user.id }" style="display:none" />
  </div>
  <div class="modal-footer">
    <button type="button" class="btn btn-default" data-dismiss="modal" id="imgClose">關閉</button>
   <button type="button" class="btn btn-primary" onclick="postImg();" id="imgSubmit">上傳</button>
  </div>
 </div>
</form>

下面是后臺的java代碼(Controller)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
//更新用戶頭像
 @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實現類

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
//查找用戶圖片(頭像)
 public User selectUserPhoto(String id) throws ImageException {
  User user = userDao.findUserById(id);
  if(user == null){
   throw new UserNameException("用戶名不存在!");
  }
  Map<String, Object> 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:

MySQL+SSM+Ajax上傳圖片問題

mapper映射器:

?
1
2
3
4
5
6
7
8
9
10
<!-- 更新圖片 -->
 <update id="updateUserPhoto" parameterType="cn.tedu.note.entity.User">
  UPDATE user set id = #{id}, photo = #{photo,jdbcType=BLOB} <!-- 這里試了,如果不加jdbcType=BLOB 會出錯,雖然不是很理解,但也照做了 -->
  WHERE id = #{id}
 </update>
 <!-- 獲取圖片 -->
 <select id="selectUserPhoto" parameterType="String" resultType="Map">
   SELECT id as id, photo as photo from user
   WHERE id=#{id}
 </select>

Spring-web.xml配置

?
1
2
3
4
5
<!-- 文件上傳表單的視圖解析器 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
 <property name="maxUploadSize"><value>100000</value></property>
 <property name="defaultEncoding"><value>UTF-8</value></property>
</bean>

以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持服務器之家!

原文鏈接:http://www.cnblogs.com/hxliang/p/6557892.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美精品一区二区三区免费 | 国产在线观看91精品一区 | 99久久久无码国产精品 | 国产精品毛片高清在线完整版 | 免费a视频在线观看 | 无遮掩60分钟从头啪到尾 | 好大好深好涨好烫还要 | 欧美日韩高清完整版在线观看免费 | 国产一卡二卡3卡4卡四卡在线 | 99精品视频在线观看免费播放 | 美女脱一光二净的视频 | 免费成年网站 | 香蕉久久高清国产精品免费 | yellow高清免费观看日本 | 久久久免费观看 | 日韩成人免费aa在线看 | 精品无码一区二区三区中文字幕 | 亚洲 综合 欧美在线 热 | 日本道三区播放区 | 免费视频完整版在线观看网站 | 日韩在线观看一区二区不卡视频 | 亚洲一成人毛片 | 色综合久久日韩国产 | 成人影院在线看 | 国产婷婷高清在线观看免费 | 成人精品mv视频在线观看 | 国内精品露脸在线视频播放 | 秋霞黄色 | 国产高清ujzzujzz | 高跟丝袜麻麻求我调教 | 国产经典一区二区三区蜜芽 | 白发在线视频播放观看免费 | 日韩毛片基地一区二区三区 | 亚洲AV 无码AV 中文字幕 | 欧美一区二区三区不卡视频 | 肉搏潘金莲三级18春 | re99| 欧美日韩人成在线观看 | 日韩欧美中文字幕一区 | 国产馆精品推荐在线观看 | 成年私人影院免费视频网站 |