使用elementUI实现将图片上传到本地的示例


Posted in Javascript onSeptember 04, 2018

查阅饿了吗官方文档可以了解上传组件的使用方法。http://element.eleme.io/#/zh-CN/component/upload

前台的页面代码为:

<el-upload
        class="upload-demo"
        ref="upload"
        action="http://127.0.0.1:20001/Administration/MediaApiLhUploadHandler"
        :on-preview="handlePreview"
        :on-remove="handleRemove"
        :file-list="fileList"
        :auto-upload="false"
       >
        <el-button slot="trigger" size="small" type="primary">选取文件</el-button>
        <el-button style="margin-left: 10px;" size="small" type="success" @click="submitUpload">上传到服务器</el-button>
       </el-upload>

具体的绑定method的方法见官方文档

上传到本地,需要在后台建立一个接口进行接收,接口代码如下:

@Override
	public void handle(List<FileItem> fileItemList, NetUpMediaapiImgUpload up, NetDownMediaapiImgUpload down, HttpServletResponse response) {
		System.out.println("path:"+getBasePath());
		if (!CommUtil.isEmpityList(fileItemList)) {
			List<String> paths=new ArrayList();
			for (FileItem fileItem : fileItemList) {
				String path = writeFile(fileItem);
				paths.add("../../static/img/"+fileItem.getName());//浏览器不允许使用绝对路径
				logger.info("上传成功:" + path);
				logger.info("更新数据");
			}
			down.setAllPath(paths);
 
		}
	}
 
	public static String writeFile(FileItem file){
		String fileName = getFileName(file.getName());
		fileName = formatFileName(fileName);
		fileName = getFilePrefix(fileName)+'.'+getFileSuffix(fileName);
		String path = getBasePath()+"/xmob-web/static/img/";
		//path="E:\\xmob\\trunk\\xmob-web\\static\\img\\";//图片应该放在WEB文件夹的static目录下
		File desFile = new File(path);
		if (!desFile .exists() && !desFile .isDirectory()) {
			System.out.println("//不存在");
			desFile .mkdir();
		}
		String result = null;
		try {
			InputStream in = file.getInputStream();
			FileOutputStream out = new FileOutputStream(path+"/"+fileName);
			//创建一个缓冲区
			byte buffer[] = new byte[1024];
			//判断输入流中的数据是否已经读完的标识
			int len = 0;
			//循环将输入流读入到缓冲区当中,(len=in.read(buffer))>0就表示in里面还有数据
			while((len=in.read(buffer))>0){
				//使用FileOutputStream输出流将缓冲区的数据写入到指定的目录(path)当中
				out.write(buffer, 0, len);
			}
			in.close();
			out.close();
			//删除处理文件上传时生成的临时文件
			file.delete();
			result = path+"/"+fileName;
		} catch (Exception e) {
			e.printStackTrace();
		}
		return result;
	}
	/**
	 * 获取资源路径
	 * @return
	 */
	private static String getBasePath(){
		String template_dir = System.getProperty("user.dir");
		return template_dir.substring(0,template_dir.lastIndexOf(File.separator));
	}
 
	/**
	 * 注意:不同的浏览器提交的文件名是不一样的,有些浏览器提交上来的文件名是带有路径的,如: c:\a\b\1.txt,而有些只是单纯的文件名,如:1.txt
	 * 处理获取到的上传文件的文件名的路径部分,只保留文件名部分
	 * @param fileName
	 * @return
	 */
	private static String getFileName(String fileName){
		fileName = fileName.substring(fileName.lastIndexOf(File.separator)+1);
		return fileName;
	}
	/**
	 * 格式化文件名
	 * @param fileName
	 * @return
	 */
	private static String formatFileName(String fileName){
		String[] sArr = fileName.split("\\.");
		String str = sArr[0];
		str = str.replaceAll(" ", "");
		str = str.replaceAll("\\s+|_", "-");
		String result = str+"."+sArr[1];
		return result;
	}
 
	/**
	 * 获得文件名前缀
	 */
	private static String getFilePrefix(String fileName){
		fileName = formatFileName(fileName);
		String[] sArr = fileName.split("\\.");
		return sArr[0];
	}
 
	/**
	 * 获得文件名后缀
	 */
	private static String getFileSuffix(String fileName){
		fileName = formatFileName(fileName);
		String[] sArr = fileName.split("\\.");
		return sArr[1];
	}

以上这篇使用elementUI实现将图片上传到本地的示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
使用javascript实现页面定时跳转总结篇
Sep 21 Javascript
js中如何复制一个对象并获取其所有属性和属性对应的值
Oct 24 Javascript
js+css 实现遮罩居中弹出层(随浏览器窗口滚动条滚动)
Dec 11 Javascript
Jquery中的层次选择器与find()的区别示例介绍
Feb 20 Javascript
JS调试必备的5个debug技巧
Mar 07 Javascript
node.js中的http.response.addTrailers方法使用说明
Dec 14 Javascript
javascript实现完美拖拽效果
May 06 Javascript
jQuery模拟爆炸倒计时功能实例代码
Aug 21 jQuery
Javascript中弹窗confirm与prompt的区别
Oct 26 Javascript
搭建一个Koa后端项目脚手架的方法步骤
May 30 Javascript
vue+element ui实现锚点定位
Jun 29 Vue.js
vue打包时去掉所有的console.log
Apr 10 Vue.js
element UI upload组件上传附件格式限制方法
Sep 04 #Javascript
在AngularJs中设置请求头信息(headers)的方法及不同方法的比较
Sep 04 #Javascript
webpack 3.X学习之多页面打包的方法
Sep 04 #Javascript
JS获取并处理php数组的方法实例分析
Sep 04 #Javascript
vue click.stop阻止点击事件继续传播的方法
Sep 04 #Javascript
vue form 表单提交后刷新页面的方法
Sep 04 #Javascript
原生JS实现动态加载js文件并在加载成功后执行回调函数的方法
Dec 30 #Javascript
You might like
PHP5.5和之前的版本empty函数的不同之处
2014/06/13 PHP
完善CodeIgniter在IDE中代码提示功能的方法
2014/07/19 PHP
php利用云片网实现短信验证码功能的示例代码
2017/11/18 PHP
一个对于js this关键字的问题
2007/01/09 Javascript
javascript js cookie的存储,获取和删除
2007/12/29 Javascript
基于jquery tab切换(防止页面刷新)
2012/05/23 Javascript
基于jquery创建的一个图片、视频缓冲的效果样式插件
2012/08/28 Javascript
获取表单控件原始(初始)值的方法
2013/08/21 Javascript
禁止页面刷新让F5快捷键及右键都无效
2014/01/22 Javascript
jQuery 1.9使用$.support替代$.browser的使用方法
2014/05/27 Javascript
javascript从作用域链谈闭包
2020/07/29 Javascript
JavaScript禁止用户多次提交的两种方法
2016/07/24 Javascript
ionic实现滑动的三种方式
2016/08/27 Javascript
bootstrap PrintThis打印插件使用详解
2017/02/20 Javascript
实现div内部滚动条滚动到底部和顶部的代码
2017/11/15 Javascript
JS实现Cookie读、写、删除操作工具类示例
2018/08/28 Javascript
jQuery实现的隔行变色功能【案例】
2019/02/18 jQuery
vue使用混入定义全局变量、函数、筛选器的实例代码
2019/07/29 Javascript
一起写一个即插即用的Vue Loading插件实现
2019/10/31 Javascript
Vue 数据响应式相关总结
2021/01/28 Vue.js
Python内置数据类型详解
2014/08/18 Python
基于python 字符编码的理解
2017/09/02 Python
Ubuntu安装Jupyter Notebook教程
2017/10/18 Python
Python面向对象编程基础解析(二)
2017/10/26 Python
Python 数据处理库 pandas进阶教程
2018/04/21 Python
Django3.0 异步通信初体验(小结)
2019/12/04 Python
opencv python图像梯度实例详解
2020/02/04 Python
HTML5资源预加载(Link prefetch)详细介绍(给你的网页加速)
2014/05/07 HTML / CSS
SIXPAD智能健身仪英国官网:革命性的训练装备品牌
2018/09/27 全球购物
澳大利亚先进的皮肤和激光诊所购物网站:Soho Skincare
2018/10/15 全球购物
网络技术专业求职信
2014/02/18 职场文书
第一批党的群众路线教育实践活动工作总结
2014/03/03 职场文书
优秀党务工作者事迹材料
2014/05/07 职场文书
2014年国庆节演讲稿
2014/09/02 职场文书
罚款通知怎么写
2015/04/22 职场文书
2019公司借款合同范本2篇!
2019/07/24 职场文书