使用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 打开窗口返回值实现代码
Mar 04 Javascript
JavaScript 面向对象之命名空间
May 04 Javascript
JQuery获取浏览器窗口内容部分高度的代码
Feb 24 Javascript
Enter回车切换输入焦点实现思路与代码兼容各大浏览器
Sep 01 Javascript
JavaScript监听文本框回车事件并过滤文本框空格的方法
Apr 16 Javascript
基于Bootstrap仿淘宝分页控件实现代码
Nov 07 Javascript
ES6新特性五:Set与Map的数据结构实例分析
Apr 21 Javascript
express框架实现基于Websocket建立的简易聊天室
Aug 10 Javascript
JS中this的指向以及call、apply的作用
May 06 Javascript
JavaScript简单实现动态改变HTML内容的方法示例
Dec 25 Javascript
vue 设置 input 为不可以编辑的实现方法
Sep 19 Javascript
Vue-CLI 3 scp2自动部署项目至服务器的方法
Jul 24 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计算函数执行时间的方法
2015/03/20 PHP
Zend Framework教程之连接数据库并执行增删查的方法(附demo源码下载)
2016/03/21 PHP
php+jQuery递归调用POST循环请求示例
2016/10/14 PHP
php格式文件打开的四种方法
2018/02/24 PHP
Laravel框架模板继承操作示例
2018/06/11 PHP
PHP文件操作实例总结【文件上传、下载、分页】
2018/12/08 PHP
实现laravel 插入操作日志到数据库的方法
2019/10/11 PHP
PHP vsprintf()函数格式化字符串操作原理解析
2020/07/14 PHP
用Javascript做flash做的事..才完成的一个类.Auntion Action var 0.1
2007/02/23 Javascript
JavaScript和CSS通过expression实现Table居中显示
2013/06/28 Javascript
JS鼠标滑过图片时切换图片实现思路
2013/09/12 Javascript
JS图片自动轮换效果实现思路附截图
2014/04/30 Javascript
innerHTML动态添加html代码和脚本兼容多个浏览器
2014/10/11 Javascript
jquery实现导航固定顶部的效果仿蘑菇街
2014/10/22 Javascript
javascript匿名函数实例分析
2014/11/18 Javascript
jQuery实现定时读取分析xml文件的方法
2015/07/16 Javascript
异步JavaScript编程中的Promise使用方法
2015/07/28 Javascript
浅谈Javascript数组索引
2015/07/29 Javascript
nodejs 的 session 简单使用
2016/06/06 NodeJs
jQuery 移动端拖拽(模块化开发,触摸事件,webpack)
2016/10/28 Javascript
神级程序员JavaScript300行代码搞定汉字转拼音
2017/05/20 Javascript
Echart折线图手柄触发事件示例详解
2018/12/16 Javascript
[01:09:20]NB vs NAVI Supermajor小组赛A组 BO3 第二场 6.2
2018/06/03 DOTA
tensorflow获取变量维度信息
2018/03/10 Python
对Python中class和instance以及self的用法详解
2019/06/26 Python
在keras 中获取张量 tensor 的维度大小实例
2020/06/10 Python
python中逻辑与或(and、or)和按位与或异或(&amp;、|、^)区别
2020/08/05 Python
cookies应对python反爬虫知识点详解
2020/11/25 Python
伦敦的高级牛仔布专家:Trilogy
2018/08/06 全球购物
C#实现启动一个进程
2016/10/01 面试题
工程项目建议书范文
2014/03/12 职场文书
仓库文员岗位职责
2014/04/06 职场文书
大专生找工作自荐书
2014/06/10 职场文书
2014入党积极分子批评与自我批评思想汇报
2014/09/20 职场文书
毕业设计工作总结
2015/08/14 职场文书
详解Vue slot插槽
2021/11/20 Vue.js