• ssm图片上传到数据库


    页面

    <li>
                        <span>当前头像:</span>
                        <!-- <img src="./images/user-lg.png" alt=""> -->
                        <img style="100px;height:100px" th:src="@{/headImg?id=} + ${session.member.id}" onerror="defaultImg(this)"/>
                        <!-- <img th:value="${session.member.headImg}" > -->
                        <div style="float:center;margin-left:140px">
                        	<form action="/saveImg" method="post" enctype ="multipart/form-data">
        						<label for="file" class="btn btn-primary" style="float: left;height: 30px; 100px;margin-right: 20px">选择照片</label>
        						<input  id="file" name="file" type="file" style="float: left;display:none"/>
        						<input  name="id" type="hidden" th:value="${session.member.id}"/>
        						<input  class="btn btn-primary" type="submit" value="提交" style="float: left">
    						</form>
                        </div>
                    </li>
    <script>
    	function defaultImg(img){
    		img.src="/images/user-lg.png";
    		}
    </script>
    

    controller层

    @RequestMapping("/saveImg")//its maximum permitted size of 1048576 bytes.
    	public String saveUserImg(MultipartFile file,Member member) {
    		Map<String,Object> result = new HashMap<String,Object>();
    		try {
    		// 获取客户端传图图片的输入流
    		InputStream ins = file.getInputStream();
    		byte[] buffer=new byte[2048];//bit---byte---1k---1m
    		int len=0;
    		 // 字节输出流
    		 ByteArrayOutputStream bos=new ByteArrayOutputStream();
    		while((len=ins.read(buffer))!=-1){
    			bos.write(buffer,0,len);
    		 }
    		 bos.flush();
    		byte img[] = bos.toByteArray();
    		member.setHeadImg(img);
    		System.out.println("图片==="+member.getHeadImg());
    		int i=memberService.saveImg(member);//修改数据库
    		
    		result.put("code",i);
    			result.put("msg", "保存头像成功");
    		} catch (Exception e) {
    			result.put("code",0);
    			result.put("msg", "保存头像失败");
    			return "uploaderror";
    		 }				
    		return "e-commerce_account";	
    	}
    	@RequestMapping(value = "/headImg", produces = MediaType.IMAGE_PNG_VALUE)
    	public ResponseEntity<byte[]> headImg(String id) throws Exception{
    
    		byte[] imageContent ;
    		// 根据id获取当前用户的信息
    		Member member = memberService.selectMemberById(id);
    				        
    		imageContent = member.getHeadImg();
    		System.out.println("图片==="+member.getHeadImg());//member.getCzyxm()
    				        
    		// 设置http头部信息
    		final HttpHeaders headers = new HttpHeaders();
    		headers.setContentType(MediaType.IMAGE_PNG);
    		// 返回响应实体
    		return new ResponseEntity<byte[]>(imageContent, headers, HttpStatus.OK);
    	}
    
    

    Service层

    	@Override
    	public int saveImg(Member member) throws Exception {
    		int i = memberMapper.saveUserImg(member);
    		if(i!=1) {
    			throw new Exception("更新用户头像失败");
    		}
    		return i;
    	}
    
    

    Mapper层

    <update id="saveUserImg" parameterType="com.datangedu.cn.model.Member">
        update member set HEAD_IMG = #{headImg} where id = #{id}
      </update>
    
    

    另外 上传图片不能过大 修改 Spring Boot工程嵌入的tomcat限制了请求的文件大小(未亲测)
    需要设置以下两个参数
    
    multipart.maxFileSize
    multipart.maxRequestSize
    
    Spring Boot 1.3.x或者之前
    
    multipart.maxFileSize=100Mb
    multipart.maxRequestSize=1000Mb
    Spring Boot 1.4.x
    
    spring.http.multipart.maxFileSize=100Mb
    spring.http.multipart.maxRequestSize=1000Mb
    很多人设置了multipart.maxFileSize但是不起作用,是因为1.4版本以上的配置改了,详见官方文档:spring boot 1.4
    
      Spring Boot 2.0之后
    
    spring.servlet.multipart.max-file-size=100MB
    spring.servlet.multipart.max-request-size=1000MB
    
    

    人生之事岂能尽如人意,生活如戏,哭笑皆由人,悲喜自己定
  • 相关阅读:
    关于Redis的介绍,使用以及集群
    关于RESTful详解
    关于Nginx——反向代理
    关于RabbitMQ
    关于Nginx——负载均衡
    关于Nginx——配置虚拟主机
    StringBuffer是字符串缓冲区
    数组的查找操作
    获取任意年的二月有多少天
    快速排序算法
  • 原文地址:https://www.cnblogs.com/Hephaestus/p/11897878.html
Copyright © 2020-2023  润新知