使用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 相关文章推荐
js中通过父级进行查找定位元素
Jun 15 Javascript
JS 对象属性相关(检查属性、枚举属性等)
Apr 05 Javascript
JQuery分屏指示器图片轮换效果实例
May 21 Javascript
深入解析JavaScript编程中的this关键字使用
Nov 09 Javascript
jQuery实现选项卡功能(两种方法)
Mar 08 Javascript
基于AngularJS的简单使用详解
Sep 10 Javascript
webpack中CommonsChunkPlugin详细教程(小结)
Nov 09 Javascript
Angular如何在应用初始化时运行代码详解
Jun 11 Javascript
vue页面切换过渡transition效果
Oct 08 Javascript
微信小程序页面缩放式侧滑效果的实现代码
Nov 15 Javascript
JavaScript实现单英文金山打字通
Jul 24 Javascript
对layui中table组件工具栏的使用详解
Sep 19 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
SONY ICF-F10中波修复记
2021/03/02 无线电
thinkphp使用literal防止模板标签被解析的方法
2014/11/22 PHP
PHP从FLV文件获取视频预览图的方法
2015/03/12 PHP
php 输入输出流详解及示例代码
2016/08/25 PHP
php版微信开发之接收消息,自动判断及回复相应消息的方法
2016/09/23 PHP
[原创]js获取数组任意个不重复的随机数组元素
2010/03/15 Javascript
JS小功能(offsetLeft实现图片滚动效果)实例代码
2013/11/28 Javascript
JavaScript中的undefined学习总结
2013/11/30 Javascript
node.js实现BigPipe详解
2014/12/05 Javascript
js时钟翻牌效果实现代码分享
2020/07/31 Javascript
Vue.js 表单校验插件
2016/08/14 Javascript
移动端js触摸事件详解
2016/09/18 Javascript
[原创]JS基于FileSaver.js插件实现文件保存功能示例
2016/12/08 Javascript
微信小程序联网请求的轮播图
2017/07/07 Javascript
浏览器调试动态js脚本的方法(图解)
2018/01/19 Javascript
node.js中 redis 的安装和基本操作示例
2020/02/10 Javascript
[56:18]DOTA2上海特级锦标赛主赛事日 - 4 败者组第四轮#2 MVP.Phx VS Fnatic第二局
2016/03/05 DOTA
[32:07]完美世界DOTA2联赛PWL S3 LBZS vs Rebirth 第一场 12.16
2020/12/17 DOTA
python用于url解码和中文解析的小脚本(python url decoder)
2013/08/11 Python
Python编程使用NLTK进行自然语言处理详解
2017/11/16 Python
Python学习之Anaconda的使用与配置方法
2018/01/04 Python
tensorflow 使用flags定义命令行参数的方法
2018/04/23 Python
使用python无账号无限制获取企查查信息的实例代码
2020/04/17 Python
PyCharm设置Ipython交互环境和宏快捷键进行数据分析图文详解
2020/04/23 Python
Python中socket网络通信是干嘛的
2020/05/27 Python
Python中有几个关键字
2020/06/04 Python
Python3.7安装PyQt5 运行配置Pycharm的详细教程
2020/10/15 Python
HTML5 canvas画图并保存成图片的jcanvas插件
2014/01/17 HTML / CSS
美国知名玩具品牌:Melissa & Doug
2016/08/16 全球购物
德国亚马逊官方网站:Amazon.de
2020/11/15 全球购物
杭州联环马网络笔试题面试题
2013/08/04 面试题
营销主管自我评价怎么写
2013/09/19 职场文书
计算机系毕业生推荐信
2013/11/06 职场文书
地方白酒代理协议书
2014/10/25 职场文书
2019数学教师下学期工作总结
2019/06/27 职场文书
Python实现猜拳与猜数字游戏的方法详解
2022/04/06 Python