最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

前端上传图片并修改名字(数据库的图片名字,并非原图片名字)

IT圈 admin 4浏览 0评论

前端上传图片并修改名字(数据库的图片名字,并非原图片名字)

用了两天的时间 百度+大佬的帮助 +我的午睡终于出来了
上最后的图(他叫罗小黑)

html
注意在head上边引入

<th:block th:include="include :: jasny-bootstrap-css"/><div class="col-sm-8"><span class="btn btn-white btn-file"><span class="fileinput-new">选择图片</span><input class="form-control"type="file"accept="image/gif,image/png,image/jpeg,image/jpg"id="file_input"></span><div style="color: red">点击图片则会取消上传</div></div><div style="margin-left: 200px"><div class="pics" id="pics"></div></div>

js

    var pics = [];window.onload = function () {var input = document.getElementById("file_input");var result, fd, dataArr = [];if (typeof FileReader === 'undefined') {alert("抱歉,你的浏览器不支持 FileReader");input.setAttribute('disabled', 'disabled');} else {input.addEventListener('change', readFile, false);}function readFile() {fd = new FormData();var iLen = this.files.length;for (var i = 0; i < iLen; i++) {let obj="";if (!input['value'].match(/.jpg|.gif|.png|.jpeg|.bmp/i)) {  //判断上传文件格式return alert("上传的图片格式不正确,请重新选择");}var aaa = this.files[i];var reader = new FileReader();fd.append(i, this.files[i]);reader.readAsDataURL(this.files[i]);  //转成base64reader.fileName = this.files[i].name;reader.onload = function (e) {var imgMsg = {name: this.fileName,//获取文件名base64: this.result   //reader.readAsDataURL方法执行完后,base64数据储存在reader.result里}var pic = {alt: this.alt,url: this.url,name:this.name}var formData = new FormData();formData.append("file", aaa);$.ajax({url: "/exam/question/questionImgUpload",type: "post",data: formData,async: false,processData: false,//用于对data参数进行序列化处理 这里必须falsecontentType: false, //必须*/success: function (data) {obj = data.url;pic.url = obj;}});pic.alt = aaa;dataArr.push(imgMsg);console.log(obj)result = '<div class="result" id="result" style="width: 100px;margin-top: 10px"><img class="subPic" src="' + this.result + '" alt="' + this.fileName + '"/><label>图片名称</label>' +'<input name="fileName" data-fileUrl="'+obj+'" value="'+this.fileName+'"/></div>';var div = document.createElement('div');div.innerHTML = result;div['className'] = 'float';document.getElementsByClassName('pics')[0].appendChild(div);    //插入dom树var img = div.getElementsByTagName('img')[0];img.onload = function () {var nowHeight = ReSizePic(this); //设置图片大小this.parentNode.style.display = 'block';var oParent = this.parentNode;if (nowHeight) {oParent.style.paddingTop = (oParent.offsetHeight - nowHeight) / 2 + 'px';}}// var input = div.getElementsByTagName('input')[i];// console.log(input)// input.oninput=function(){//     console.log($('input[name="fileName"]').val());//     // console.log(div.getElementsByTagName('input')[0])//     console.log(input)// }pics.push(pic);img.onclick = function () {pics.forEach((item, j) => {if (item.alt == aaa) {pics.splice(j, 1); // 从下标 i 开始, 删除 1 个元素}})div.remove();// 在页面中删除该图片元素}}// var urls;// pics.forEach((item, j) => {//    urls=urls+";"+item.url// })$("#file_input").val("")}}}function ReSizePic(ThisPic) {var RePicWidth = 200; //这里修改为您想显示的宽度值var TrueWidth = ThisPic.width; //图片实际宽度var TrueHeight = ThisPic.height; //图片实际高度if (TrueWidth > TrueHeight) {//宽大于高var reWidth = RePicWidth;ThisPic.width = reWidth;//垂直居中var nowHeight = TrueHeight * (reWidth / TrueWidth);return nowHeight;  //将图片修改后的高度返回,供垂直居中用} else {//宽小于高var reHeight = RePicWidth;ThisPic.height = reHeight;}}

(这个是在网上扒的,因为清了缓存找不到原地址了 )
controller

    @PostMapping("/questionImgUpload")@ResponseBodypublic R pictureUpload(MultipartFile file){String fileName = file.getOriginalFilename();fileName = FileUtil.renameToUUID(fileName);Date date = new Date();FileDO sysFile = new FileDO(FileType.fileType(fileName), "/file/examQusetionImg/"+new SimpleDateFormat("yyyy/MM/dd/").format(date) + fileName, new Date());try {FileUtil.uploadFile(file.getBytes(), templateConfig.getProfile()+"/examQusetionImg/"+new SimpleDateFormat("yyyy/MM/dd/").format(date), fileName);} catch (Exception e) {return R.error();}return R.ok().put("url", sysFile.getUrl());}

(那个r是返会成功失败的)贴上来吧 毕竟我比较笨可能以后就不会了哈哈

@data
public class R extends HashMap<String, Object> {private static final long serialVersionUID = 1L;public R() {put("code", 0);put("msg", "success");}@Overridepublic R put(String key, Object value) {super.put(key, value);return this;}}

还有啊我们用的thymeleaf 所以是他自己封装的
下边是如何把名字传到数据库

//html 在form下写<input type="hidden" name="fileList" value="">
//提交function submitHandler() {var list = [];$("input[name='fileName']").each(function (i, ele) {list.push({imgUrl: $(ele).attr("data-fileUrl"), imgName:$(ele).val()});})console.log(list)$('input[name="fileList"]').val(JSON.stringify(list));if ($.validate.form()) {$.operate.save(prefix + "/add", $('#form-question-add').serialize());}}

然后这样传回去 的是一个String 要转一下
在接收的实体类里写的

private String fileList;public List<ExamQuestionImg> examQuestionImgs() {if (StringUtils.isEmpty(this.fileList)) {return new ArrayList<>();}return JSON.parseArray(this.fileList, ExamQuestionImg.class);}

加油

前端上传图片并修改名字(数据库的图片名字,并非原图片名字)

用了两天的时间 百度+大佬的帮助 +我的午睡终于出来了
上最后的图(他叫罗小黑)

html
注意在head上边引入

<th:block th:include="include :: jasny-bootstrap-css"/><div class="col-sm-8"><span class="btn btn-white btn-file"><span class="fileinput-new">选择图片</span><input class="form-control"type="file"accept="image/gif,image/png,image/jpeg,image/jpg"id="file_input"></span><div style="color: red">点击图片则会取消上传</div></div><div style="margin-left: 200px"><div class="pics" id="pics"></div></div>

js

    var pics = [];window.onload = function () {var input = document.getElementById("file_input");var result, fd, dataArr = [];if (typeof FileReader === 'undefined') {alert("抱歉,你的浏览器不支持 FileReader");input.setAttribute('disabled', 'disabled');} else {input.addEventListener('change', readFile, false);}function readFile() {fd = new FormData();var iLen = this.files.length;for (var i = 0; i < iLen; i++) {let obj="";if (!input['value'].match(/.jpg|.gif|.png|.jpeg|.bmp/i)) {  //判断上传文件格式return alert("上传的图片格式不正确,请重新选择");}var aaa = this.files[i];var reader = new FileReader();fd.append(i, this.files[i]);reader.readAsDataURL(this.files[i]);  //转成base64reader.fileName = this.files[i].name;reader.onload = function (e) {var imgMsg = {name: this.fileName,//获取文件名base64: this.result   //reader.readAsDataURL方法执行完后,base64数据储存在reader.result里}var pic = {alt: this.alt,url: this.url,name:this.name}var formData = new FormData();formData.append("file", aaa);$.ajax({url: "/exam/question/questionImgUpload",type: "post",data: formData,async: false,processData: false,//用于对data参数进行序列化处理 这里必须falsecontentType: false, //必须*/success: function (data) {obj = data.url;pic.url = obj;}});pic.alt = aaa;dataArr.push(imgMsg);console.log(obj)result = '<div class="result" id="result" style="width: 100px;margin-top: 10px"><img class="subPic" src="' + this.result + '" alt="' + this.fileName + '"/><label>图片名称</label>' +'<input name="fileName" data-fileUrl="'+obj+'" value="'+this.fileName+'"/></div>';var div = document.createElement('div');div.innerHTML = result;div['className'] = 'float';document.getElementsByClassName('pics')[0].appendChild(div);    //插入dom树var img = div.getElementsByTagName('img')[0];img.onload = function () {var nowHeight = ReSizePic(this); //设置图片大小this.parentNode.style.display = 'block';var oParent = this.parentNode;if (nowHeight) {oParent.style.paddingTop = (oParent.offsetHeight - nowHeight) / 2 + 'px';}}// var input = div.getElementsByTagName('input')[i];// console.log(input)// input.oninput=function(){//     console.log($('input[name="fileName"]').val());//     // console.log(div.getElementsByTagName('input')[0])//     console.log(input)// }pics.push(pic);img.onclick = function () {pics.forEach((item, j) => {if (item.alt == aaa) {pics.splice(j, 1); // 从下标 i 开始, 删除 1 个元素}})div.remove();// 在页面中删除该图片元素}}// var urls;// pics.forEach((item, j) => {//    urls=urls+";"+item.url// })$("#file_input").val("")}}}function ReSizePic(ThisPic) {var RePicWidth = 200; //这里修改为您想显示的宽度值var TrueWidth = ThisPic.width; //图片实际宽度var TrueHeight = ThisPic.height; //图片实际高度if (TrueWidth > TrueHeight) {//宽大于高var reWidth = RePicWidth;ThisPic.width = reWidth;//垂直居中var nowHeight = TrueHeight * (reWidth / TrueWidth);return nowHeight;  //将图片修改后的高度返回,供垂直居中用} else {//宽小于高var reHeight = RePicWidth;ThisPic.height = reHeight;}}

(这个是在网上扒的,因为清了缓存找不到原地址了 )
controller

    @PostMapping("/questionImgUpload")@ResponseBodypublic R pictureUpload(MultipartFile file){String fileName = file.getOriginalFilename();fileName = FileUtil.renameToUUID(fileName);Date date = new Date();FileDO sysFile = new FileDO(FileType.fileType(fileName), "/file/examQusetionImg/"+new SimpleDateFormat("yyyy/MM/dd/").format(date) + fileName, new Date());try {FileUtil.uploadFile(file.getBytes(), templateConfig.getProfile()+"/examQusetionImg/"+new SimpleDateFormat("yyyy/MM/dd/").format(date), fileName);} catch (Exception e) {return R.error();}return R.ok().put("url", sysFile.getUrl());}

(那个r是返会成功失败的)贴上来吧 毕竟我比较笨可能以后就不会了哈哈

@data
public class R extends HashMap<String, Object> {private static final long serialVersionUID = 1L;public R() {put("code", 0);put("msg", "success");}@Overridepublic R put(String key, Object value) {super.put(key, value);return this;}}

还有啊我们用的thymeleaf 所以是他自己封装的
下边是如何把名字传到数据库

//html 在form下写<input type="hidden" name="fileList" value="">
//提交function submitHandler() {var list = [];$("input[name='fileName']").each(function (i, ele) {list.push({imgUrl: $(ele).attr("data-fileUrl"), imgName:$(ele).val()});})console.log(list)$('input[name="fileList"]').val(JSON.stringify(list));if ($.validate.form()) {$.operate.save(prefix + "/add", $('#form-question-add').serialize());}}

然后这样传回去 的是一个String 要转一下
在接收的实体类里写的

private String fileList;public List<ExamQuestionImg> examQuestionImgs() {if (StringUtils.isEmpty(this.fileList)) {return new ArrayList<>();}return JSON.parseArray(this.fileList, ExamQuestionImg.class);}

加油

发布评论

评论列表 (0)

  1. 暂无评论