使用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添加String.Format方法
Aug 11 Javascript
HTA版JSMin(省略修饰语若干)基于javascript语言编写
Dec 24 Javascript
jquery实现带二级菜单的导航示例
Apr 28 Javascript
javascript中的nextSibling使用陷(da)阱(keng)
May 05 Javascript
Javascript中的默认参数详解
Oct 22 Javascript
jQuery的promise与deferred对象在异步回调中的作用
May 03 Javascript
如何利用JQuery实现从底部回到顶部的功能
Dec 27 Javascript
jquery mobile移动端幻灯片滑动切换效果
Apr 15 Javascript
js注册时输入合法性验证方法
Oct 21 Javascript
Angular 数据请求的实现方法
May 07 Javascript
ajaxfileupload.js实现上传文件功能
Apr 19 Javascript
AJAX检测用户名是否存在的方法
Mar 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
Linux下实现PHP多进程的方法分享
2012/08/16 PHP
CodeIgniter图像处理类的深入解析
2013/06/17 PHP
微信自定义菜单的创建/查询/取消php示例代码
2016/08/05 PHP
PHP实现的各类hash算法长度及性能测试实例
2017/08/27 PHP
php封装db类连接sqlite3数据库的方法实例
2017/12/19 PHP
javascript URL锚点取值方法
2009/02/25 Javascript
JavaScript网页定位详解
2014/01/13 Javascript
自己封装的javascript事件队列函数版
2014/06/12 Javascript
JS控制文本域只读或可写属性的方法
2016/06/24 Javascript
javascript数字验证的实例代码(推荐)
2016/08/20 Javascript
纯JS实现可拖拽表单的简单实例
2016/09/02 Javascript
移动端利用H5实现压缩图片上传功能
2017/03/29 Javascript
ES6的Fetch异步请求的实现方法
2018/12/07 Javascript
详解Vue的组件中data选项为什么必须是函数
2020/08/17 Javascript
vue使用exif获取图片旋转,压缩的示例代码
2020/12/11 Vue.js
[06:11]2014DOTA2国际邀请赛 专访团结一心的VG战队
2014/07/21 DOTA
python实现计算资源图标crc值的方法
2014/10/05 Python
Django中的“惰性翻译”方法的相关使用
2015/07/27 Python
使用python批量读取word文档并整理关键信息到excel表格的实例
2018/11/07 Python
python实现小球弹跳效果
2019/05/10 Python
selenium+python环境配置教程详解
2019/05/28 Python
Python 类的私有属性和私有方法实例分析
2019/09/29 Python
python 队列基本定义与使用方法【初始化、赋值、判断等】
2019/10/24 Python
python 抓取知乎指定回答下视频的方法
2020/07/09 Python
分享PyCharm最新激活码(真永久激活方法)不用每月找安装参数或最新激活码了
2020/12/27 Python
一款纯css3实现的鼠标经过按钮特效教程
2014/11/09 HTML / CSS
HTML5有哪些新特征
2015/12/01 HTML / CSS
Html5原创俄罗斯方块(基于canvas)
2019/01/07 HTML / CSS
英国假发网站:Hothair
2018/02/23 全球购物
英国复古服装购物网站:Collectif
2019/10/30 全球购物
几道PHP的面试题
2012/05/19 面试题
预备党员公开承诺书
2014/05/28 职场文书
员工保密协议书
2014/09/27 职场文书
教师正风肃纪心得体会
2016/01/15 职场文书
详解java如何集成swagger组件
2021/06/21 Java/Android
Linux中各个目录的作用与内容
2022/06/28 Servers