使用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 相关文章推荐
JScript中的&quot;this&quot;关键字使用方式补充材料
Mar 08 Javascript
JavaScript建立一个语法高亮输入框实现思路
Feb 26 Javascript
node.js中的fs.readdir方法使用说明
Dec 17 Javascript
谈一谈jQuery核心架构设计
Mar 28 Javascript
json传值以及ajax接收详解
May 24 Javascript
实例解析jQuery中如何取消后续执行内容
Dec 01 Javascript
jQuery中的100个技巧汇总
Dec 15 Javascript
JS实现中国公民身份证号码有效性验证
Feb 20 Javascript
详解vue.js之props传递参数
Dec 12 Javascript
jQuery实现的手动拖动控制进度条效果示例【测试可用】
Apr 18 jQuery
解析Json字符串的三种方法日常常用
May 02 Javascript
vue-cli整合vuex的时候,修改actions和mutations,实现热部署的方法
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
PHP与SQL注入攻击[二]
2007/04/17 PHP
ThinkPHP在新浪SAE平台的部署实例
2014/10/31 PHP
PHP中类的继承和用法实例分析
2016/05/24 PHP
php获取文件名称和扩展名的方法
2017/02/07 PHP
javascript 贪吃蛇实现代码
2008/11/22 Javascript
jQuery下实现等待指定元素加载完毕(可改成纯js版)
2013/07/11 Javascript
javascript设置金额样式转换保留两位小数示例代码
2013/12/04 Javascript
JavaScript实现大数的运算
2014/11/24 Javascript
轻松实现javascript数据双向绑定
2015/11/11 Javascript
基于jQuery实现的双11天猫拆红包抽奖效果
2015/12/01 Javascript
基于jQuery实现动态搜索显示功能
2016/05/05 Javascript
javascript 动态脚本添加的简单方法
2016/10/11 Javascript
js将table的每个td的内容自动赋值给其title属性的方法
2016/10/13 Javascript
用JS实现根据当前时间随机生成流水号或者订单号
2018/05/31 Javascript
详解webpack打包时排除其中一个css、js文件或单独打包一个css、js文件(两种方法)
2018/10/26 Javascript
JavaScript进制转换实现方法解析
2020/01/18 Javascript
vue cli4下环境变量和模式示例详解
2020/04/09 Javascript
Python处理json字符串转化为字典的简单实现
2016/07/07 Python
视觉直观感受若干常用排序算法
2017/04/13 Python
pandas.DataFrame 根据条件新建列并赋值的方法
2018/04/08 Python
Python集中化管理平台Ansible介绍与YAML简介
2019/06/12 Python
Python 读取串口数据,动态绘图的示例
2019/07/02 Python
Python的缺点和劣势分析
2019/11/19 Python
Python TCPServer 多线程多客户端通信的实现
2019/12/31 Python
PyTorch学习:动态图和静态图的例子
2020/01/06 Python
新建文件时Pycharm中自动设置头部模板信息的方法
2020/04/17 Python
keras 自定义loss损失函数,sample在loss上的加权和metric详解
2020/05/23 Python
python 字符串的驻留机制及优缺点
2020/06/19 Python
keras 多任务多loss实例
2020/06/22 Python
怎么快速自学python
2020/06/22 Python
Python 读取位于包中的数据文件
2020/08/07 Python
Html5页面中的返回实现的方法
2018/02/26 HTML / CSS
德国网上花店:Valentins
2018/08/15 全球购物
《自然之道》教学反思
2014/02/11 职场文书
精神文明单位申报材料
2014/05/02 职场文书
2015年大学生社会实践评语
2015/03/26 职场文书