`
faylai
  • 浏览: 78220 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

上传之前预览本地图片 extjs3 的实现

    博客分类:
  • js
阅读更多


点击浏览弹出选择文件


 

确定后:

 



 呵呵不错啊

代码如下:

 

Ext.ui.ImageUploadField = Ext.extend(Ext.form.TextField, {
	autoCreate : {
		cls : 'x-form-field-wrap x-form-file-wrap',
		style : 'position:relative;height:auto;'
	},
	setValue : function(new_value) {
		this.value = new_value;
		if (this.rendered) {
			if (new_value == undefined || new_value == null) {
				this.img.dom.src = this.defaultUrl || Ext.BLANK_IMAGE_URL;
			} else {
				this.img.dom.src = new_value;
			}
			this.img.on("load", function() {
				this.fireEvent("imgload");
			}, this, {
				single : true
			});
		}
	},
	initComponent : function() {
		Ext.ui.ImageUploadField.superclass.initComponent.apply(this, arguments);
		var me = this;
		this.on("imgload", function() {
			this.reAlign();
		});
	},
	initValue : function() {
		this.setValue(this.value);
	},
	getValue : function() {
		return this.fileField.dom.value;
	},
	getRawValue : function() {
		return this.fileField.dom.value;
	},

	reAlign : function() {
		this.button.el.anchorTo(this.el, "r-r");
		this.fileField.anchorTo(this.el, "r-r");
	},
	onRender : function(ct) {
		Ext.ui.ImageUploadField.superclass.onRender.apply(this, arguments);
		this.img = this.el.createChild({
			tag : 'img',
			src : Ext.BLANK_IMAGE_URL,
			height : this.imgHeight || 50,
			style : 'border:1px solid #cfcfcf;'
		});
		this.img.on("load", function() {
			this.fireEvent("imgload");
		}, this, {
			single : true
		})

		this.fileField = this.el.createChild({
			tag : 'input',
			type : 'file',
			style : 'position: absolute;right: 0;-moz-opacity: 0;filter:alpha(opacity: 0);opacity: 0;z-index: 2;z-index:999;',
			name : this.name
		});
		var btnCfg = this.buttonConfig || {};
		this.button = new Ext.Button(Ext.apply(btnCfg, {
			renderTo : this.el,
			text : btnCfg.text || '浏览',
			cls : 'x-form-file-btn' + (btnCfg.iconCls ? ' x-btn-icon' : '')
		}));
		this.button.el.setStyle("position", "absolute");
		this.reAlign();
		this.fileField.on({
			scope : this,
			change : function() {
				this.setValue(this.getFileFieldValue());
				this.fireEvent('fileselected', this, this.getFileFieldValue());
			}
		});

	},
	// 得到浏览器版本
	getOs : function() {
		var OsObject = "";
		if (navigator.userAgent.indexOf("MSIE") > 0) {
			return "MSIE";
		}
		if (isFirefox = navigator.userAgent.indexOf("Firefox") > 0) {
			return "Firefox";
		}
		if (isSafari = navigator.userAgent.indexOf("Safari") > 0) {
			return "Safari";
		}
		if (isCamino = navigator.userAgent.indexOf("Camino") > 0) {
			return "Camino";
		}
		if (isMozilla = navigator.userAgent.indexOf("Gecko/") > 0) {
			return "Gecko";
		}
	},

	getFileFieldValue : function() {
		// IE浏览器获取图片路径
	    function getImgUrlByMSIE(fileid) {
			return document.getElementById(fileid).value;
		}
		// 非IE浏览器获取图片路径
		function getImgUrlByUnMSIE(fileid) {
			var f = document.getElementById(fileid).files[0];
			return window.URL.createObjectURL(f);
		}
		var imgsrc = "";
		var fid = this.fileField.id;
		if ("MSIE" == this.getOs()) {
			imgsrc = getImgUrlByMSIE(fid);
		} else {
			imgsrc = getImgUrlByUnMSIE(fid);
		}
		return imgsrc;
	},
	setImgWidth : function(w) {
		if (w) {
			this.img.setWidth(w);
		}
	},
	setWidth : function(w) {
		this.setImgWidth(w);
		Ext.ui.ImageUploadField.superclass.setWidth.apply(this, arguments);
	},

	setSize : function(w, h) {
		// support for standard size objects
		if (typeof w == 'object') {
			h = w.height;
			w = w.width;
		}
		Ext.ui.ImageUploadField.superclass.setSize.apply(this, arguments);
		this.reAlign();
		this.setImgWidth(w);
	}

});

Ext.reg('imageuploadfield', Ext.ui.ImageUploadField);

 
 呵呵完成

 

 


 

  • 大小: 18 KB
  • 大小: 45.9 KB
  • 大小: 14.2 KB
分享到:
评论

相关推荐

    批量图片预览上传(extjs,支持html5和flash)

    在批量图片预览上传场景中,EXTJS可以用于构建前端交互界面,处理用户的选择和上传逻辑。 1. **EXTJS组件使用**:EXTJS 提供了FileField组件,可以用来接收用户选择的文件。配合UploadButton或FormPanel,可以方便...

    extjs中本地照片预览、blob数据在oracle中存取

    此压缩包中完全能实现的功能是在extjs中让本地照片预览,并且将地址传递给java后台,将图片文件以blob的形式存储到oracle数据库,并且可以默认将数据库中的数据第一次加载在预览框里(也就是从数据库中读出blob数据...

    绝对好用!extjs中本地照片预览、blob数据在oracle中存取.zip

    此压缩包中完全能实现的功能是在extjs中让本地照片预览,并且将地址传递给java后台,将图片文件以blob的形式存储到oracle数据库,并且可以默认将数据库中的数据第一次加载在预览框里(也就是从数据库中读出blob数据...

    EXtjs 图片批量上传

    本教程将深入探讨如何在ExtJS中实现图片的批量上传功能,以及与之相关的批量删除操作。 首先,批量上传图片的核心是利用HTML5的File API,它允许用户在不离开当前页面的情况下读取、处理和上传本地文件。在ExtJS中...

    extjs图片上传

    本文将深入探讨如何使用EXTJS来实现图片上传,包括多图预览、上传以及删除功能,并结合给定的文件名,分析基于JSP的后端处理。 EXTJS是Sencha公司推出的一款JavaScript库,主要用于构建桌面级的Web应用程序。它提供...

    Extjs图片上传 带过滤和缩略图

    在"Extjs图片上传 带过滤和缩略图"这个主题中,我们将深入探讨如何使用ExtJS实现图片上传功能,同时结合过滤和缩略图显示,以提升用户体验。 1. **图片上传组件**: 在ExtJS中,可以使用`Ext.form.FileField`或`...

    extjs htmleditor 图片上传和添加网络图片编辑器

    这个主题主要关注如何在ExtJS的HTMLEditor中实现图片的上传和添加网络图片功能。 首先,理解ExtJS HTMLEditor的基本结构和工作原理是至关重要的。HTMLEditor是一个组件,它可以将HTML代码作为输入,并提供类似于...

    基于EXTJS 的在线EXCEL编辑器

    5. **数据导入导出**:用户可以上传本地的Excel文件进行在线编辑,也可以将编辑后的数据导出为Excel格式,方便数据交换。 6. **权限控制**:通过集成的身份验证和权限管理,可以限制不同用户对数据的访问和操作权限...

    Extjs多文件上传

    在ExtJS 4中,实现多文件上传功能是一项常见的需求,特别是在处理用户需要一次性上传多个图片或文档的场景下。这一功能通常涉及到Ajax异步通信、文件输入控件、前端文件预览以及后台服务器的处理逻辑。 首先,我们...

    本地上传图片预览,并客户端判断文件大小和文件格式

    在IT行业中,本地上传图片预览以及客户端判断文件大小和文件格式是常见的功能需求,尤其在Web应用中。这一功能可以提升用户体验,让用户在上传图片前就能预览效果,同时防止上传过大或不合适的文件。以下是对这个...

    解决Extjs上传图片无法预览的解决方法

    在EXTJS中,上传图片并实现预览功能可能会遇到一些挑战,特别是在处理浏览器的兼容性问题时。这里我们将深入探讨如何解决EXTJS上传图片无法预览的问题,以及如何优化代码以适应不同浏览器。 首先,我们需要了解...

    ExtJS upload file

    ExtJS 提供了多种组件用于文件上传,如`Ext.form.FileField`(又名“上传字段”),这个组件允许用户选择本地文件并发送到服务器。你可以自定义按钮样式,添加预览功能,甚至控制文件类型和大小限制。 2. **...

    extjs 上传

    在"extjs 上传"这个主题中,我们主要关注的是如何使用ExtJS实现文件上传功能。ExtJS 4.0.0是该框架的一个版本,它包含了一系列组件和工具,可以帮助开发者创建功能丰富的交互式界面,包括文件上传组件。 文件上传在...

    EXTJS-upload.rar_extjs

    6. **扩展组件(Plugins)**:EXTJS社区提供了一些第三方插件,如`Ext.ux.form.FileUploadField`,可以增强文件上传功能,比如添加多文件选择、预览功能等。 7. **安全性与权限控制**:在实现文件上传时,还需要...

    基于Spring+Struts2.3+ExtJS4.2的简单文件管理系统

    项目中的HTML5预览功能可能利用这些API来实现对文本、图片等多种类型文件的在线预览。 5. **文件评论**:用户可以对文件进行评论,这通常需要一个数据库存储评论内容,并通过Struts2或者Spring MVC的控制器处理用户...

    上传下载ExtJS 2.2 开源网络硬盘系统-dogdisk.zip

    ExtJS提供了`FileUploadField`组件,可以配合表单提交实现文件上传。开发者需要处理服务器端的文件接收和存储逻辑。 2. **文件下载**:系统应能提供文件的下载链接或支持直接在浏览器中预览。在ExtJS中,可以使用`...

    Extjs上传组件

    描述中提到的`upload.js`可能是一个自定义的实现或者ExtJS的扩展,用于增强默认的上传功能。它可能包含了处理文件选择事件、文件预览、进度条更新、错误处理等逻辑。在开发时,我们通常会覆盖或扩展`Ext.form....

    Ext中的Excel导入界面

    3. **AJAX上传**:使用ExtJS的Ajax请求(`Ext.Ajax.request`)或者FormPanel的submit方法,将文件数据发送到后台服务器。通常,文件内容会被转换成Base64编码或使用FormData对象封装。 4. **文件类型验证**:在前端...

    extjs 的简单导入文件 第一步

    3. **事件监听**:在用户选择文件后,我们需要监听`change`或`select`事件,以便在文件选择后执行相应的操作,如显示预览或开始上传。 4. **Ajax上传**:Ext JS 提供了 `Ext.Ajax` 类,可以用来发送异步请求,这在...

Global site tag (gtag.js) - Google Analytics