使用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中的if语句使用介绍
Nov 20 Javascript
JavaScript实现计算字符串中出现次数最多的字符和出现的次数
Mar 12 Javascript
JS中使用变量保存arguments对象的方法
Jun 03 Javascript
网站发布后Bootstrap框架引用woff字体无法正常显示的解决方法
Nov 24 Javascript
Vue的Flux框架之Vuex状态管理器
Jul 30 Javascript
微信小程序实现手指触摸画板
Jul 09 Javascript
vue this.reload 方法 配置
Sep 12 Javascript
详解js模板引擎art template数组渲染的方法
Oct 09 Javascript
vuex vue简单使用知识点总结
Aug 29 Javascript
安装多版本Vue-CLI的实现方法
Mar 24 Javascript
JS实现多选框的操作
Jun 24 Javascript
微信小程序12行js代码自己写个滑块功能(推荐)
Jul 15 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
实时抓取YAHOO股票报价的代码
2006/10/09 PHP
smarty模板中拼接字符串的方法
2014/02/14 PHP
PHP中redis的用法深入解析
2014/02/20 PHP
PHP实现QQ快速登录的方法
2016/09/28 PHP
yii2.0整合阿里云oss上传单个文件的示例
2017/09/19 PHP
PHP实现微信提现功能
2018/09/30 PHP
PHP 模拟登陆功能实例详解
2019/09/10 PHP
JavaScript判断DOM何时加载完毕的技巧
2012/11/11 Javascript
from表单多个按钮提交用onclick跳转不同action
2014/04/24 Javascript
JavaScript中this的9种应用场景及三种复合应用场景
2015/09/12 Javascript
jQuery+css实现的换页标签栏效果
2016/01/27 Javascript
JS实时弹出新消息提示框并有提示音响起的实现代码
2016/04/20 Javascript
jQuery基础_入门必看知识点
2016/07/04 Javascript
js模态对话框使用方法详解
2017/02/16 Javascript
原生JS实现跑马灯效果
2017/02/20 Javascript
详解webpack异步加载业务模块
2017/06/23 Javascript
vue将时间戳转换成自定义时间格式的方法
2018/03/02 Javascript
H5+C3+JS实现五子棋游戏(AI篇)
2020/05/28 Javascript
JavaScript实现的弹出遮罩层特效经典示例【基于jQuery】
2019/07/10 jQuery
关于layui的动态图标不显示的解决方法
2019/09/04 Javascript
js简单的分页器插件代码实例
2019/09/11 Javascript
详解vue修改elementUI的分页组件视图没更新问题
2020/11/13 Javascript
python实现多线程的两种方式
2016/05/22 Python
深入理解python中的闭包和装饰器
2016/06/12 Python
python3+PyQt5实现文档打印功能
2018/04/24 Python
解决已经安装requests,却依然提示No module named requests问题
2018/05/18 Python
python中int与str互转方法
2018/07/02 Python
Python使用plt.boxplot() 参数绘制箱线图
2020/06/04 Python
Python中的None与 NULL(即空字符)的区别详解
2020/09/24 Python
Python调用REST API接口的几种方式汇总
2020/10/19 Python
python 对一幅灰度图像进行直方图均衡化
2020/10/27 Python
聊聊Python pandas 中loc函数的使用,及跟iloc的区别说明
2021/03/03 Python
教师党员个人整改措施材料
2014/09/16 职场文书
学习优秀共产党员先进事迹思想报告
2014/09/17 职场文书
商务英语求职信范文
2015/03/19 职场文书
PostgreSQL将数据加载到buffer cache中操作方法
2021/04/16 PostgreSQL