使用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 相关文章推荐
prototype 源码中文说明之 prototype.js
Sep 22 Javascript
JS获得URL超链接的参数值实例代码
Jun 21 Javascript
jquery操作复选框(checkbox)的12个小技巧总结
Feb 04 Javascript
Javascript中设置默认参数值示例
Sep 11 Javascript
AngularJS基础学习笔记之指令
May 10 Javascript
Ajax+FormData+javascript实现无刷新表单信息提交
Oct 24 Javascript
jquery中用函数来设置css样式
Dec 22 Javascript
微信小程序 监听手势滑动切换页面实例详解
Jun 15 Javascript
Vue自定义指令写法与个人理解
Feb 09 Javascript
layui清空,重置表单数据的实例
Sep 12 Javascript
vue实现计算器功能
Feb 22 Javascript
react 不用插件实现数字滚动的效果示例
Apr 14 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 实现的将图片转换为TXT
2015/10/21 PHP
PHP用户验证和标签推荐的简单使用
2016/10/31 PHP
php常用数组函数实例小结
2016/12/29 PHP
PHP实现找出链表中环的入口节点
2018/01/16 PHP
使用JavaScript修改浏览器URL地址栏的实现代码
2013/10/21 Javascript
深入理解JavaScript中的传值与传引用
2013/12/09 Javascript
jquery选择器之层级过滤选择器详解
2014/01/27 Javascript
jQuery实现的一个tab切换效果内部还嵌有切换
2014/08/10 Javascript
JavaScript按值删除数组元素的方法
2015/04/24 Javascript
jQuery实现带延迟的二级tab切换下拉列表效果
2015/09/01 Javascript
jQuery实现的经典滑动门效果
2015/09/22 Javascript
Nodejs的express使用教程
2015/11/23 NodeJs
基于Angularjs实现分页功能
2016/05/30 Javascript
JavaScript 数组- Array的方法总结(推荐)
2016/07/21 Javascript
原生js获取元素样式的简单方法
2016/08/06 Javascript
JS控制HTML元素的显示和隐藏的两种方法
2016/09/27 Javascript
angular实现表单验证及提交功能
2017/02/01 Javascript
详解vue2.0的Element UI的表格table列时间戳格式化
2017/06/13 Javascript
在vue中通过axios异步使用echarts的方法
2018/01/13 Javascript
解决vue路由name同名,路由重复的问题
2020/08/05 Javascript
深度剖析使用python抓取网页正文的源码
2014/06/11 Python
python标准算法实现数组全排列的方法
2015/03/17 Python
在Linux系统上通过uWSGI配置Nginx+Python环境的教程
2015/12/25 Python
Python3.6连接Oracle数据库的方法详解
2018/05/18 Python
pygame实现俄罗斯方块游戏
2018/06/26 Python
python文件拆分与重组实例
2018/12/10 Python
对Django 转发和重定向的实例详解
2019/08/06 Python
浅谈图像处理中掩膜(mask)的意义
2020/02/19 Python
Python Unittest原理及基本使用方法
2020/11/06 Python
使用canvas一步步实现图片打码功能的方法
2019/06/17 HTML / CSS
Amaze UI 文件选择域的示例代码
2020/08/26 HTML / CSS
美体小铺瑞典官方网站:The Body Shop瑞典
2018/01/27 全球购物
英国领先的名牌服装折扣零售商:Brown Bag Clothing
2019/01/08 全球购物
法学专业个人求职信
2013/09/26 职场文书
十佳好少年事迹材料
2014/08/21 职场文书
校园新闻广播稿5篇
2014/10/10 职场文书