JAVA项目中如何实现图片上传?
JAVA项目中实现图片上传
**前端div**
<div class="layui-form-item"><label class="layui-form-label">头像</label><div class="layui-input-inline"><div class="layui-upload"><div class="layui-upload-list" style=""><img class="layui-upload-img" src="${user.userAvatar}" id="demo1" width="100"height="100"><p id="demoText"></p></div><button type="button" class="layui-btn" id="test1">上传图片</button><input type="hidden" name="userAvatar" id="userAvatar" value="${user.userAvatar}"></div></div></div>
js文件:
<script>//上传图片layui.use('upload', function () {var $ = layui.jquery,upload = layui.upload;var uploadInst = upload.render({elem: '#test1',url: '/admin/upload/img',before: function (obj) {obj.preview(function (index, file, result) {$('#demo1').attr('src', result);});},done: function (res) {$("#userAvatar").attr("value", res.data.src);if (res.code > 0) {return layer.msg('上传失败');}},error: function () {var demoText = $('#demoText');demoText.html('' +'<span style="color: #FF5722;">上传失败</span>' +' <a class="layui-btn layui-btn-mini demo-reload">重试</a>');demoText.find('.demo-reload').on('click', function () {uploadInst.upload();});}});});</script>
uploadfilescontroller文件:
package com.h.ssm.demo.controller.admin;import com.h.ssm.demo.dto.JsonResult;
import com.h.ssm.demo.dto.UploadFileVO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;import java.io.File;
import java.io.IOException;
import java.util.Calendar;@Slf4j
@RestController
@RequestMapping("/admin/upload")
public class UploadFileController {/*** 文件保存目录,物理路径*/public final String rootPath = "F:\\uploads";public final String allowSuffix = ".bmp.jpg.jpeg.png.gif.pdf.doc.zip.rar.gz";/*** 上传文件** @param file* @return* @throws IOException*/@RequestMapping(value = "/img", method = RequestMethod.POST)public JsonResult uploadFile(@RequestParam("file") MultipartFile file) {//1.文件后缀过滤,只允许部分后缀//文件的完整名称,如spring.jpegString filename = file.getOriginalFilename();//文件名,如springString name = filename.substring(0, filename.indexOf("."));//文件后缀,如.jpegString suffix = filename.substring(filename.lastIndexOf("."));if (allowSuffix.indexOf(suffix) == -1) {return new JsonResult().fail("不允许上传该后缀的文件!");}//2.创建文件目录//创建年月文件夹Calendar date = Calendar.getInstance();File dateDirs = new File(date.get(Calendar.YEAR)+ File.separator + (date.get(Calendar.MONTH) + 1));//目标文件File descFile = new File(rootPath + File.separator + dateDirs + File.separator + filename);int i = 1;//若文件存在重命名String newFilename = filename;while (descFile.exists()) {newFilename = name + "(" + i + ")" + suffix;String parentPath = descFile.getParent();descFile = new File(parentPath + File.separator + newFilename);i++;}//判断目标文件所在的目录是否存在if (!descFile.getParentFile().exists()) {//如果目标文件所在的目录不存在,则创建父目录descFile.getParentFile().mkdirs();}//3.存储文件//将内存中的数据写入磁盘try {file.transferTo(descFile);} catch (Exception e) {e.printStackTrace();log.error("上传失败,cause:{}", e);}//完整的urlString fileUrl = "/uploads/" + dateDirs + "/" + newFilename;//4.返回URLUploadFileVO uploadFileVO = new UploadFileVO();uploadFileVO.setTitle(filename);uploadFileVO.setSrc(fileUrl);return new JsonResult().ok(uploadFileVO);}
}
JsonResult文件:
package com.h.ssm.demo.dto;import lombok.Data;@Data
public class JsonResult<T> {/*** 错误码*/private Integer code;/*** 提示信息*/private String msg;/*** 返回的具体内容*/private T data;public JsonResult(Integer code, String msg, T data) {this.code = code;this.msg = msg;this.data = data;}public JsonResult() {}public JsonResult fail() {return new JsonResult(1, "操作失败", null);}public JsonResult fail(String msg) {return new JsonResult(1, msg, null);}public JsonResult ok() {return new JsonResult(0, "操作成功", null);}public JsonResult ok(T data) {return new JsonResult(0, "操作成功", data);}
}
ResultVO文件: //不知道用不用
package com.h.ssm.demo.dto;import lombok.Data;@Data
public class ResultVO<T> {/*** 错误码*/private Integer code;/*** 提示信息*/private String msg;/*** 返回的具体内容*/private T data;public ResultVO(Integer code, String msg, T data) {this.code = code;this.msg = msg;this.data = data;}public ResultVO() {}
}
UploadFileVO文件:
package com.h.ssm.demo.dto;import lombok.Data;@Data
public class UploadFileVO {private String src;private String title;}
util包下MyUtils文件://不知道用不用
package com.liuyanzhao.ssm.demo.util;import javax.servlet.http.HttpServletRequest;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;/*** 常用的方法*/public class MyUtils {/*** 获得IP地址** @param request* @return*/public static String getIpAddr(HttpServletRequest request) {String ipAddress = request.getHeader("x-forwarded-for");if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {ipAddress = request.getHeader("Proxy-Client-IP");}if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {ipAddress = request.getHeader("WL-Proxy-Client-IP");}if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {ipAddress = request.getRemoteAddr();}//对于通过多个代理的情况,第一个IP为客户端真实IP,多个IP按照','分割if (ipAddress != null && ipAddress.length() > 15) {if (ipAddress.indexOf(",") > 0) {ipAddress = ipAddress.substring(0, ipAddress.indexOf(","));}}return ipAddress;}/*** 获得Md5加密** @param str 原字符串* @return 加密后的字符串*/public static String strToMd5(String str) {String md5Str = null;if (str != null && str.length() != 0) {try {MessageDigest md = MessageDigest.getInstance("MD5");md.update(str.getBytes());byte b[] = md.digest();int i;StringBuffer buf = new StringBuffer("");for (int offset = 0; offset < b.length; offset++) {i = b[offset];if (i < 0) {i += 256;}if (i < 16) {buf.append("0");}buf.append(Integer.toHexString(i));}//32位md5Str = buf.toString();//16位//md5Str = buf.toString().substring(8, 24);} catch (NoSuchAlgorithmException e) {e.printStackTrace();}}return md5Str;}/*** 根据email获取gravatar头像** @param email Email* @return 头像URL*/public static String getGravatar(String email) {String emailMd5 = strToMd5(email);//设置图片大小32pxString avatar = "http://cn.gravatar.com/avatar/" + emailMd5 + "?s=128&d=identicon&r=PG";return avatar;}}
貌似好i需要lombok插件 在setting中下载使用data注解
JAVA项目中如何实现图片上传?相关推荐
- vue项目中的h5图片上传(处理上传的时候图片被旋转的问题,并压缩图片大小)
vue的图片上传 这个页面实现的主要是实现创建球队功能,里面包含队徽,球队类型,球队名称,所属地址 这里除了图片上传还有一个地址的三级联动功能,这里我把这个页面都贴上来了.这个项目中使用vux作为ui ...
- Java服务器部署基于OpenCV的C++图像处理项目(三)图片上传并返回处理图
Java服务器部署基于OpenCV的C++图像处理项目(三)图片上传并返回处理图 1.上传图片并返回灰度图功能 由于使用的springboot开发,直接写一个upload接口供图片上传,以下是spri ...
- Java 开发笔记 - wangEditor 编辑器图片上传
Java 开发笔记 - wangEditor 编辑器图片上传 前言 转型 java 开发后入手的第一个项目,写写博客记录一下 该项目使用的是 sping boot + mybatis plus + t ...
- Java实现模拟QQ空间图片上传
Java实现模拟QQ空间图片上传 首先看效果: 首先编写我们的上传jsp代码,如下: <%@ page language="java" contentType="t ...
- java窗体广告墙(图片上传)java广告系统
java窗体广告墙(图片上传)java广告系统 public Swingtest002() {// 设置标题setTitle("请登陆");// 绝对布局setLayout(nul ...
- Java Web项目中遇到的文件上传与下载问题
(转发自:https://www.cnblogs.com/xdp-gacl/p/4200090.html) 在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中 ...
- kindeditor java 上传图片_java中KindEditor本地图片上传与上传失败问题
此代码是最新版的 KindEditor 3.5.x 实现本地图片上传的方法,用于oschina即将改版的个人空间 KindEditor 要求的JSON格式如下: {"error": ...
- java实现上传图片代码_Java图片上传实现代码
本文实例为大家分享了java图片上传代码,供大家参考,具体内容如下 import java.io.*; import java.net.*; /* *发送端 */ class picsend { pu ...
- 从web编辑器 UEditor 中单独提取图片上传,包含多图片单图片上传以及在线涂鸦功能...
UEditor是由百度web前端研发部开发所见即所得富文本web编辑器,具有轻量,可定制,注重用户体验等特点,开源基于MIT协议,允许自由使用和修改代码.(抄的...) UEditor是非常好用的富文 ...
最新文章
- python报错 ValueError: dictionary update sequence element #0 has length 1; 2 is require
- 带android小绿人的屏保相册,盘点:那些年我们追过的Android
- Nacos发布 v0.2 版本,无缝支持 Spring Cloud 微服务生态及高可用集群模式
- 软件测试用例设计“八法归一”——因果阵
- 面试时算法题的解答思路
- hnu 暑期实训之web导航
- Ubuntu下配置lazarus开发环境
- 美国计算机科学教师协会,2020-2021 ACSL AMERICAN COMPUTER SCIENCE LEAGUE 美国计算机科学联赛...
- 刚毕业一个月,7 月正式入职深圳互联网公司的前端月度工作汇报 |总结
- 如何给程序添加数字签名 sign
- 最新可用今日头条视频解析(简单分析+易语言实现)
- AJP:纵向研究:抑郁症青年在当前期和累积期的奖赏系统的功能障碍具有不同的神经基础
- 网络管理维护(SNMP、RMON)期末考试大纲总结
- 抖音的服务器到底啥配置?
- FastDFS构成、特性、Linux下安装以及Java如何访问
- 拍拍关闭:C2C模式走向终结?
- CSS @font-face用法小结
- 大一第二学期课程总结
- MAPGIS格式转为shp格式
- 骑驴找马被察觉怎么办?
热门文章
- 阿里云购买域名实名认证及网站备案
- Python递归函数返回阶乘
- 简要分析光猫是如何通过运营商实现上网的
- [git]fatal: unable to read config file 'xxx/.gitconfig': No such file or directory
- Cannot open output file: Permission denied 的处理方式
- int和字符串的类型转换
- 5G NR无线通信频率分配表
- 阿里巴巴最新总结「百亿级别并发设计手册」GitHub收获70K标星
- specified sample format s16 is invalid or not supported(linux)
- The value of the local variable xxx is not usedJava解决办法