使用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 相关文章推荐
一个tab标签切换效果代码
Mar 27 Javascript
克隆javascript对象的三个方法小结
Jan 12 Javascript
基于编写jQuery的无缝滚动插件
Aug 02 Javascript
JavaScript保留关键字汇总
Dec 01 Javascript
JavaScript实现斗地主游戏的思路
Feb 29 Javascript
JS中判断字符串中出现次数最多的字符及出现的次数的简单实例
Jun 03 Javascript
轮播的简单实现方法
Jul 28 Javascript
Vue.js常用指令汇总(v-if、v-for等)
Nov 03 Javascript
jQuery插件zTree实现删除树节点的方法示例
Mar 08 Javascript
Bootstrap免费字体和图标网站(值得收藏)
Mar 16 Javascript
JS实现去除数组中重复json的方法示例
Dec 21 Javascript
JS实现统计字符串中字符出现个数及最大个数功能示例
Jun 04 Javascript
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中用header图片地址 简单隐藏图片源地址
2008/04/09 PHP
yii框架中的Url生产问题小结
2012/01/16 PHP
php常用Output和ptions/Info函数集介绍
2013/06/19 PHP
php中time()与$_SERVER[REQUEST_TIME]用法区别
2014/11/19 PHP
PHP的数组中提高元素查找与元素去重的效率的技巧解析
2016/03/03 PHP
Laravel重定向,a链接跳转,控制器跳转示例
2019/10/22 PHP
javascript 常用方法总结
2009/06/03 Javascript
基于jquery 的一个progressbar widge
2010/10/29 Javascript
jQuery创建插件的代码分析
2011/04/14 Javascript
javascript对象的使用和属性操作示例详解
2014/03/02 Javascript
jquery的ajax异步请求接收返回json数据实例
2014/06/16 Javascript
javascript正则表达式基础知识入门
2015/04/20 Javascript
理解javascript模块化
2016/03/28 Javascript
JS之获取样式的简单实现方法(推荐)
2016/09/13 Javascript
bootstrap模态框实现拖拽效果
2016/12/14 Javascript
jquery Form轻松实现文件上传
2017/05/24 jQuery
原生JS实现的放大镜特效示例【测试可用】
2018/12/08 Javascript
利用原生JS实现欢乐水果机小游戏
2020/04/23 Javascript
mpvue 项目初始化及实现授权登录的实现方法
2020/07/20 Javascript
js实现表格单列按字母排序
2020/08/12 Javascript
Python字符串处理之count()方法的使用
2015/05/18 Python
Python数据分析之真实IP请求Pandas详解
2016/11/18 Python
解决uWSGI的编码问题详解
2017/03/24 Python
Python中的探索性数据分析(功能式)
2017/12/22 Python
python使用PyQt5的简单方法
2019/02/27 Python
Django项目中实现使用qq第三方登录功能
2019/08/13 Python
Python无损压缩图片的示例代码
2020/08/06 Python
使用python-cv2实现视频的分解与合成的示例代码
2020/10/26 Python
python快速安装OpenCV的步骤记录
2021/02/22 Python
全球知名巧克力品牌:Godiva
2016/07/22 全球购物
贝斯特韦斯特酒店集团官网:Best Western
2019/01/03 全球购物
财务分析个人的自荐书范文
2013/11/24 职场文书
区级文明单位申报材料
2014/05/15 职场文书
企业公益活动策划方案
2014/08/24 职场文书
JavaScript控制台的更多功能
2021/04/28 Javascript
springboot集成redis存对象乱码的问题及解决
2022/06/16 Java/Android