上传功能-弹窗实现-vue
-引入弹窗页面
import fileUpload from 'src/page/cuApplyManage/fileUpload.vue';
-页面布局
<div>
<fileUpload ref="dialog" @successReload="fileUploadSuccessReload" ></fileUpload>
</div>
-上传成功后,从上传子页面传值到父页面
fileUploadSuccessReload(data){
let acctData = this.acctFormData;
let dealData = (JSON.stringify(acctData) + JSON.stringify(data)).replace(/{}/, '');
dealData = JSON.parse(dealData.replace(/}{/, ','));
this.acctFormData = dealData ;
}
-按钮打开上传页面
<el-button type="primary" icon="el-icon-upload" @click="showFileUpload">上传</el-button>
-按钮事件
showFileUpload(){
this.$refs.dialog.pvalue = true;
} 上传功能-页面
<el-upload
v-show="true"
accept=".png,.jpg,.pdf"
ref="upload"
action="uploadAction"
:before-upload="beforeUpload"
:http-request="uploadHttpRequest"
:file-list="fileList"
:auto-upload="false"
:show-file-list="true"
:multiple="false"
></el-upload>
uploadHttpRequest(param) {//执行上传动作
var this_ = this;
const formData = new FormData();
formData.append('file', param.file);
const url = this.uploadAction;
let xhr = new XMLHttpRequest();
xhr.open('post',url,true);
xhr.onreadystatechange = function () {
if (xhr.readyState == 4) {
if (xhr.status == 200 || xhr.status == 0) {
this_.onSuccess(JSON.parse(xhr.responseText));
}else{
this_.onError(xhr.responseText);
}
}
}
xhr.send(formData);
},
doUplaod() {//触发uploadHttpRequest
this.$refs.upload.submit();
}
onSuccess(response, file, fileList) {
if (response.code === '000000') {
let retObj = response.data;
this.msgSuccess(response.msg);
this.$emit('successReload',retObj);//返回值到父页面
this.closeDialog();
} else {
this.msgError(response.msg);
}
}
上传功能-后端
@RequestMapping(value = "/uploadFileTest")
public ResultEntity uploadFileTest(@RequestParam("file") MultipartFile file) {
logger.info("接收到的文件数据为:" + file);
ResultEntity re = new ResultEntity();
Map<String, Object> retMap = null;
if (file.isEmpty()) {
re.setMsg("上传文件为空");
return re;
}
String fileName = file.getOriginalFilename();
logger.info("上传文件名:" + fileName);
logger.info("文件上传路径:" + fileUploadLocale);
String suffixName = fileName.substring(fileName.lastIndexOf("."));
String prefixName = fileName.substring(0, fileName.lastIndexOf("."));
try {
File dest0 = new File(fileUploadLocale);
File dest = new File(fileUploadLocale ,
prefixName+"-"+ ToolDateTime.getDate(ToolDateTime.PATTERN_YMDHMS)+suffixName);
// 检测是否存在目录
logger.info("上传文件保存名称:" + dest.getName());
if (!dest0.exists()) {
dest0.mkdirs();
}
file.transferTo(dest);
retMap = new HashMap<String, Object>();
retMap.put("bankFileName",dest.getName());
retMap.put("bankFile",dest.getAbsolutePath());
re.data(retMap).ok();
} catch (Exception e) {
logger.error("文件上传错误",e);
re.setMsg("上传文件失败");
}
return re;
}
-引入弹窗页面import fileUpload from 'src/page/cuApplyManage/fileUpload.vue';-页面布局 <div> <fileUpload ref="dialog" @successReload="fileUploadSuccessReload" ></fileUpload> </div>-上传成功后,从上传子页面传值到父页面fileUploadSuccessReload(data){let acctData = this.acctFormData;let dealData = (JSON.stringify(acctData) + JSON.stringify(data)).replace(/{}/, '');dealData = JSON.parse(dealData.replace(/}{/, ','));this.acctFormData = dealData ;}-按钮打开上传页面 <el-button type="primary" icon="el-icon-upload" @click="showFileUpload">上传</el-button>-按钮事件showFileUpload(){this.$refs.dialog.pvalue = true;}
上传功能-页面<el-uploadv-show="true"accept=".png,.jpg,.pdf"ref="upload"action="uploadAction":before-upload="beforeUpload":http-request="uploadHttpRequest":file-list="fileList":auto-upload="false":show-file-list="true":multiple="false"></el-upload>uploadHttpRequest(param) {//执行上传动作var this_ = this;const formData = new FormData();formData.append('file', param.file);const url = this.uploadAction;let xhr = new XMLHttpRequest();xhr.open('post',url,true);xhr.onreadystatechange = function () { if (xhr.readyState == 4) { if (xhr.status == 200 || xhr.status == 0) { this_.onSuccess(JSON.parse(xhr.responseText)); }else{ this_.onError(xhr.responseText); } }}xhr.send(formData);},doUplaod() {//触发uploadHttpRequestthis.$refs.upload.submit();}onSuccess(response, file, fileList) {if (response.code === '000000') {let retObj = response.data;this.msgSuccess(response.msg);this.$emit('successReload',retObj);//返回值到父页面this.closeDialog();} else {this.msgError(response.msg);}}上传功能-后端@RequestMapping(value = "/uploadFileTest")public ResultEntity uploadFileTest(@RequestParam("file") MultipartFile file) { logger.info("接收到的文件数据为:" + file); ResultEntity re = new ResultEntity(); Map<String, Object> retMap = null; if (file.isEmpty()) { re.setMsg("上传文件为空"); return re; } String fileName = file.getOriginalFilename(); logger.info("上传文件名:" + fileName); logger.info("文件上传路径:" + fileUploadLocale); String suffixName = fileName.substring(fileName.lastIndexOf(".")); String prefixName = fileName.substring(0, fileName.lastIndexOf(".")); try { File dest0 = new File(fileUploadLocale); File dest = new File(fileUploadLocale , prefixName+"-"+ ToolDateTime.getDate(ToolDateTime.PATTERN_YMDHMS)+suffixName); // 检测是否存在目录 logger.info("上传文件保存名称:" + dest.getName()); if (!dest0.exists()) { dest0.mkdirs(); } file.transferTo(dest); retMap = new HashMap<String, Object>(); retMap.put("bankFileName",dest.getName()); retMap.put("bankFile",dest.getAbsolutePath()); re.data(retMap).ok(); } catch (Exception e) { logger.error("文件上传错误",e); re.setMsg("上传文件失败"); } return re;}
上传功能-弹窗实现-vue的更多相关文章
- Vue实现多文件上传功能(前端 + 后端代码)
本人业余前端开发,因为公司(很坑)觉得我很牛逼,所以让我前后端一起玩,无奈的我只能磕磕碰碰的研究起了vue. 开发项目的时候,用到文件上传的功能很常见,包括单文件上传和多文件上传,上传各种类型的文件. ...
- 使用element的upload组件实现一个完整的文件上传功能(上)
说到标题就有点心塞了,前段时间项目上需要实现一个文件上传的功能,然后就咔咔的去用了element的upload组件,不用不知道一用吓一跳哇. 在使用的过程中遇到了很多让意想不到的问题,后来也因为时间问 ...
- 使用element的upload组件实现一个完整的文件上传功能(下)
本篇文章是<使用element的upload组件实现一个完整的文件上传功能(上)>的续篇. 话不多说,接着上一篇直接开始 一.功能完善—保存表格中每一列的文件列表状态 1.思路 保存表格中 ...
- .net下Ueditor配置(主要讲解上传功能配置)
Ueditor上传功能配置——.net 今天项目中用到Ueditor就自己配置了下,但上传功能和图片显示功能不能正确使用,就自己琢磨了下.已实现上传功能,并能显示正确的图片和文件,在线编辑功能也能使用 ...
- megapix-image插件 使用Canvas压缩图片上传 解决手机端图片上传功能的问题
最近在弄微信端的公众号.订阅号的相关功能,发现原本网页上用的uploadify图片上传功能到手机端有的手机类型上就不能用了,比如iphone,至于为啥我想应该不用多说了吧(uploadify使用fla ...
- iOS 的 Safari 文件上传功能详解
iOS 6 给 Safari 浏览器带来的另外一个功能是文件上传,终于 Safari 终于支持 input 输入框的文件类型了,并且还支持 HTML媒体捕获(HTML Media Capture). ...
- [php基础]PHP.INI配置:文件上传功能配置教程
昨天分享了在PHP网站开发中如何在php.ini中配置实现session功能的PHP教程,今天继续分享在利用PHP实现文件上传功能时几点关键php.ini的配置. 说到在php.ini中的文件上传的配 ...
- FLASH图片上传功能—从百度编辑器UEditor里面提取出来
为了记录工作中碰到的各种问题,以及学习资料整理,今天开始,将以往的文章进行了一个整理,以后也开始认真的记录学习过程中的各种问题 在HTML里面的文件上传功能一直是个问题,为了实现上传文件大小限制,怎样 ...
- 达到HTTP合约Get、Post和文件上传功能——采用WinHttp介面
于<采用WinHttp实现HTTP协议Get.Post和文件上传功能>一文中,我已经比較具体地解说了怎样使用WinHttp接口实现各种协议. 在近期的代码梳理中,我认为Post和文件上传模 ...
随机推荐
- 第8.34节 《Python类中常用的特殊变量和方法》总结
本章介绍了Python类中常用的特殊变量和方法,这些特殊变量和方法都有特殊的用途,是Python强大功能的基石之一,许多功能非常有Python特色.由于Python中一切皆对象,理解这些特殊变量和方法 ...
- 第11.21节 Python 中正则表达式的其他扩展功能
一. 引言 在<第11.17节 Python 正则表达式扩展功能:命名组功能及组的反向引用>中老猿介绍了组匹配模式的命名组功能及引用组功能,这两者都是正则表达式的扩展功能,其实在re模块中 ...
- Python正则表达式re.search(r'\*{3,8}','*****')和re.search('\*{3,8}','*****')的匹配结果为什么相同?
老猿做过如下测试: >>> re.search(r'\*{3,100}','*****') <re.Match object; span=(0, 5), match='**** ...
- requests的再次学习
title: requests模块的再次理解 date: 2020-03-10 22:44:26 tags: 1.response的解析 当requests模块发送请求后,我们会对其响应的数据也就是r ...
- 美国SEC主席离任,Panda Global 前瞻数字资产监管政策变化
在上上个周末,也就是6月20号,美国的证券行业发生了一件值得反复回味的的事情--美国SEC现任主席Jay Clayton宣布即将离任,对于数字资产行业而言,未来监管政策将如何演变突然有了无限的遐想空间 ...
- SA-IS学习笔记
Q:SA-IS 是什么玩意? A:一种 \(O(n)\) 求后缀数组的高科技. Q:为什么会有 SA-IS 这种算法? A:因为它是 \(O(n)\) 的,比倍增 \(O(n\log n)\) 快. ...
- 题解-Words
题面 Words 有 \(n\) 天,每天插入一个字符集大小为 \(c\) 长度为 \(l\) 的字符串,求每一天建立 \(\tt Trie\) 树的期望节点数(根节点不算)模 \(998244353 ...
- XJOI contest 1590
首先 热烈庆祝"CSP-S 2020全国开放赛前冲刺模拟训练题1"圆满结束!!! 感谢大毒瘤周指导的题目.题目还是很不错的,部分分设置的也比较合理,各种神仙随便 \(\text{A ...
- CF873D Merge Sort
其实最优的方法其他的题解已经讲得很好了,本题解仅用于记录和分享一个新的思路. 这道题是让你输出符合条件的序列,而序列的每个数之间具有一定的逻辑关系,很容易想到拓扑排序,于是此题就变为,如何找出满足条件 ...
- 树莓派开发笔记(十一):蓝牙的使用,BlueZ协议(双树莓探测rssi并通过蓝牙互传获取的rssi信号强度)
若该文为原创文章,转载请注明原文出处本文章博客地址:https://blog.csdn.net/qq21497936/article/details/110940484长期持续带来更多项目与技术分享, ...