抖音资讯

douyinzx

elementui上传文件到后端(前端上传文件对象给后端的方法)

iseeyu2年前 (2024-05-04)抖音资讯117

上传得到的地址是本地

 

目前页面看到的图片只是自己的缓存,没有真正存入服务器,需要自己写action服务来接受保存图片

服务器接收图片代码如下:

@ResponseBody
	@RequestMapping(value = "/uploadFile", method = { RequestMethod.GET, RequestMethod.POST })
	public ResponseDTO uploadFile(@RequestParam("file") MultipartFile file, HttpServletRequest request) {
		try {
			// 原名字
			String originalFilename = file.getOriginalFilename();
			String suffix = originalFilename.substring(originalFilename.indexOf("."));
			//MD5
			String fileName = DigestUtils.md5DigestAsHex(file.getBytes()) + suffix;
			String sf = suffix.substring(1);
			if (file.getSize() > Commons.fileSize)
				return new ResponseDTO(-1, "上传图片要小于2M!", null);
			if (!checkImg.contains(sf.toLowerCase()))
				return new ResponseDTO(-1, "上传格式错误!", null);
			System.out.println(fileName);
			boolean f = FileUtil.uploadFile(file.getBytes(), fileUploadPath + fileName);
			if (f) {
				// 数据库ID
				String id = Commons.getUUID();
				// 上传用户名字
				String no = (String) request.getSession().getAttribute("no");
				//将图片记录存入服务器
				//TODO
				Map<String, Object> map = new HashMap<String, Object>();
				map.put("MD5", fileName);
				return new ResponseDTO(1, "上传成功!", map);
			}
			return new ResponseDTO(-1, "上传失败!", null);
		} catch (IOException e) {
			return new ResponseDTO(-1, "上传失败!", null);
		}
	}

fileutil方法:

import java.io.FileOutputStream;
import java.io.IOException;
public class FileUtil {
	public static boolean uploadFile(byte[] file, String fileName) {
		FileOutputStream out = null;
		try {
			out = new FileOutputStream(fileName);
			out.write(file);
			out.flush();
			return true;
		} catch (IOException e) {
			return false;
		} finally {
			try {
				out.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
}

当上传成功后我返回了图片的MD5,接收结果如下:

 

这些钩子函数可以在elementui官网找到
http://element-cn.eleme.io/#/zh-CN/component/upload

如果上传失败,移除该图片;

这里只是做了个演示,将本地图片的地址替换为服务器地址,当第二次打开时,应该将服务器的地址传输给页面

 

此时地址已替换为服务器地址

前端代码:

<el-upload action="/index/uploadFile" list-type="picture-card" :on-preview="handlePictureCardPreview" :on-remove="handleRemove" :on-success="uploadSuccess" :file-list="fileList" :before-upload="beforeAvatarUpload">
 <i class="el-icon-plus"></i>
 </el-upload>
 <el-dialog :visible.sync="dialogVisible">
 <img width="100%" :src="dialogImageUrl" alt="">
 </el-dialog>

data:

fileList: [], //图片信息
 dialogImageUrl: '',
 dialogVisible: false,

函数:

 uploadSuccess: function(response, file, fileList) {
 debugger;
 this.$message({
 showClose: true,
 message: response.msg,
 type: response.codeResult == 1 ? "success" : "error"
 });
 if (response.codeResult != 1) {
 //上传失败
 this.handleRemove(file, fileList, true);
 } else {
 if (this.form.imgUrl == undefined)
 this.form.imgUrl = [];
 this.form.imgUrl.push(response.data.MD5);
 file.id=response.data.MD5;
 file.url="/index/downloadFile?fileName="+file.id;
 }
 },
 handleRemove(file, fileList, bool) {
 	debugger;
 if (bool) {
 $.each(fileList, (i, value) => {
 if (file.uid == value.uid) {
 fileList.splice(i, 1);
 return false;
 }
 })
 }
 for (var i = 0; i < this.form.imgUrl.length; i++) {
 if (this.form.imgUrl[i] == file.id) {
 this.form.imgUrl.splice(i, 1);
 break;
 }
 }
 console.log(this.form);
 console.log(file, fileList);
 },
 handlePictureCardPreview(file) {
 this.dialogImageUrl = file.url;
 this.dialogVisible = true;
 },
 beforeAvatarUpload(file) {
 this.uploadData = file.uid;
 const isJPG = file.type.toLowerCase() === 'image/jpeg';
 const isGIF = file.type.toLowerCase() === 'image/gif';
 const isPNG = file.type.toLowerCase() === 'image/png';
 const isBMP = file.type.toLowerCase() === 'image/bmp';
 const isLt2M = file.size / 1024 / 1024 < 2;
 if (!isJPG && !isGIF && !isPNG && !isBMP) {
 this.$message.error('上传图片必须是JPG/GIF/PNG/BMP 格式!');
 }
 if (!isLt2M) {
 this.$message.error('上传头像图片大小不能超过 2MB!');
 }
 return (isJPG || isBMP || isGIF || isPNG) && isLt2M;
 },

扫描二维码推送至手机访问。

版权声明:本文由西安泽虎代运营发布,如需转载请注明出处。

转载请注明出处https://www.0291.com.cn/post/45043.html

相关文章

快手广告管理平台:​应用下载类广告转化数据API接口文档《NO.2》

快手广告管理平台:​应用下载类广告转化数据API接口文档《NO.2》

接口二 接口二用于广告主将应用内转化数据上报给快手广告服务器,快手会将收到的转化数据与广告计划-广告组-广告创意关联,跟踪每个广告创意的转化效果。 1. 简介 请求方:广告主提供的监测平台服务器 处理方:快手广告服务器 请求协议:HTTP HTTPS 请求方式:GET 请求地址:监...

抖音挂机直播是什么意思?抖音挂机直播介绍

抖音挂机直播是什么意思?抖音挂机直播介绍

 什么是“挂机直播”? 挂机直播是指在直播过程中,长时间挂播或长时间不展示实物影响用户体验的直播行为。 “挂机直播”违规类型 自媒体培训 “挂机直播”违规包括但不限于 1.创作者在直播中长期不与直播间观众交谈/互动等挂播行为。 2....

快手【今日学堂】每周速递04

快手【今日学堂】每周速递04

 尊敬的快手企业广告主,您好! 今日学堂是磁力引擎一站式学习平台,集结最新产品知识,整合前瞻行业洞察,沉淀专业优化方法 每周速递精选最新、最热内容,方便广告主高效阅读 登陆今日学堂,点击课程名称了解详情: 「计划分析报表」是一款针对于投放实验室系统动作的官方数据解读,支...

麦当劳、小小蚁国与快手出海在海外实现本地破圈!

麦当劳、小小蚁国与快手出海在海外实现本地破圈!

对于出海来说,最重要的流量密码是什么?或许很多人会说是,是产品,是品牌价值。这些答案都不错,但是这些的核心理念实际上是本地化。没有提前对目标做好充足的准备,不熟悉本地和用户行为,生搬硬套地用通用的产品促销和创意公司来吸引目标市场可能最终导致效果差强人意。这便是没有做好本地化...

抖音运营经验分享:如何打爆流量,单条作品突破百万浏览?

抖音运营经验分享:如何打爆流量,单条作品突破百万浏览?

最近我们抖音账号连续两条作品突破百万。对于粉丝上百万的账号来说,这或许不算什么,但是对于我们小账号来说,有单条百万的作品,可以极大地刺激我们的信心,同时也说明我们的策略是正确的。热门作品首先要满足基本要求,场景要好,拍摄技术好,画质要好,这是对于好作品来说最基本的要求,满足...

怎样调整关键词匹配方式合适?竞价托管大神们是这样操作的

怎样调整关键词匹配方式合适?竞价托管大神们是这样操作的

我们知道一个账户最理想的情况下只有一种状态那就是精确,这样就不会造成乱匹出现浪费,但是这不可能的事,所以就出现了各种匹配模式,有精确,短精,短同,核心和广泛,百度推广竞价中 那什么词该给什么样的模式呢? 1、根据关键词长度,匹配模式跟关键词长度成正比。这列数值没有的大家请点开推广助手的右上方有...

现在,非常期待与您的又一次邂逅

我们努力让每一部企业宣传片和抖音短视频成为商业大片