使用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 相关文章推荐
jquery api参考 visualjquery 中国线路 速度快
Nov 30 Javascript
文本框水印提示效果的简单实现代码
Feb 22 Javascript
jquery如何判断表格同一列不同行input数据是否重复
May 14 Javascript
JavaScript实现的字符串replaceAll函数代码分享
Apr 02 Javascript
JS+CSS相对定位实现的下拉菜单
Oct 06 Javascript
js修改onclick动作的四种方法(推荐)
Aug 18 Javascript
使用express搭建一个简单的查询服务器的方法
Feb 09 Javascript
用图片替换checkbox原始样式并实现同样的功能
Nov 15 Javascript
详解vue中使用protobuf踩坑记
May 07 Javascript
微信小程序tab切换可滑动切换导航栏跟随滚动实现代码
Sep 04 Javascript
JavaScript对象属性操作实例解析
Feb 04 Javascript
vue 实现基础组件的自动化全局注册
Dec 25 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
php zip文件解压类代码
2009/12/02 PHP
提升PHP性能的21种方法介绍
2013/06/25 PHP
通过dbi使用perl连接mysql数据库的方法
2014/04/16 PHP
24条货真价实的PHP代码优化技巧
2016/07/28 PHP
Javascript事件热键兼容ie|firefox
2010/12/30 Javascript
IE8提示Invalid procedure call or argument 异常的解决方法
2012/09/30 Javascript
JS+CSS 制作的超级简单的下拉菜单附图
2013/11/22 Javascript
jquery实现textarea输入框限制字数的方法
2015/01/15 Javascript
js完美解决IE6不支持position:fixed的bug
2015/04/24 Javascript
Angular 4依赖注入学习教程之ClassProvider的使用(三)
2017/06/04 Javascript
原理深度解析Vue的响应式更新比React快
2020/04/04 Javascript
微信小程序组件生命周期的踩坑记录
2021/03/03 Javascript
Python编写百度贴吧的简单爬虫
2015/04/02 Python
Python读取图片属性信息的实现方法
2016/09/11 Python
Pandas探索之高性能函数eval和query解析
2017/10/28 Python
在Pycharm中修改文件默认打开方式的方法
2019/01/17 Python
Python线程threading模块用法详解
2020/02/26 Python
解决pymysql cursor.fetchall() 获取不到数据的问题
2020/05/15 Python
在django admin中配置搜索域是一个外键时的处理方法
2020/05/20 Python
Python如何实现邮件功能
2020/05/27 Python
如何在Python对Excel进行读取
2020/06/04 Python
Peter Alexander新西兰站:澳大利亚领先的睡衣设计师品牌
2016/12/10 全球购物
美国运动鞋和运动服零售商:Footaction
2017/04/07 全球购物
行政部总经理岗位职责
2014/01/04 职场文书
20年同学聚会感言
2014/02/03 职场文书
租房协议书范本
2014/04/09 职场文书
大专学生求职自荐信
2014/07/06 职场文书
个人自我剖析材料
2014/09/30 职场文书
向国旗敬礼学生寄语大全
2014/09/30 职场文书
婚庆主持词大全
2015/06/30 职场文书
OpenCV全景图像拼接的实现示例
2021/06/05 Python
总结Python使用过程中的bug
2021/06/18 Python
Javascript使用integrity属性进行安全验证
2021/11/07 Javascript
MongoDB使用场景总结
2022/02/24 MongoDB
DE1103使用报告
2022/04/05 无线电
Django框架中表单的用法
2022/06/10 Python