项目中需要在表单中使用图片上传且预览组件,网上搜了下解决方案,实在是没什么可参考,于是自己动手写了个,效果如下:
使用如下:
{ fieldLabel : "头像", xtype : "imagefield", value : "images/example/default_pic.png2", btnCfg : { text : "上传", scope : this, handler : function(a,d){ alert(a.getValue()) a.setValue("images/example/default_pic.png") } } }
实现代码:
/** * 图片框 Ext.form.ImageField * @cfg btnCfg 配置形如 { text : "click", handler :function(imageFiled){ }, scope : this }} @cfg imgCfg : { cls : "", style : "margin: 0px 0px 1px; border: 1px solid rgb(204, 204, 204); width: 100; height: 100px;" */ Ext.form.ImageField = Ext.extend(Ext.form.DisplayField,{ initComponent : function(){ this.initContents(); Ext.form.ImageField.superclass.initComponent.call(this); }, //private initContents : function(){ this.btnId = Ext.id(); this.imgId = Ext.id() this.btnCfg = Ext.applyIf(this.btnCfg||{},{ text : "click", handler :Ext.emptyFn, scope : this }) this.imgCfg = Ext.applyIf(this.btnCfg||{},{ cls : "", style : "margin: 0px 0px 1px; border: 1px solid rgb(204, 204, 204); width: 100; height: 100px;" }) this.html = '<img id="'+this.imgId+'" style="'+this.imgCfg.style+'" src="'+(this.value||Ext.BLANK_IMAGE_URL)+'" >' + '<br> <input size="20" type="button" ' +'value="'+this.btnCfg.text+'" id="'+this.btnId+'">'; }, //override afterRender : function(){ Ext.form.ImageField.superclass.afterRender.call(this); this.addBtnClickEvent.defer(100,this); }, //private addBtnClickEvent : function(){ Ext.fly(this.btnId).on("click",this.btnCfg.handler.createDelegate(this.btnCfg.scope,[this])); }, //override initValue : Ext.emptyFn, //override getRawValue : function(){ var imgEl = Ext.fly(this.imgId); if(imgEl){ return imgEl.getAttribute("src"); } return ""; }, //override setRawValue : function(v){ var imgEl = Ext.fly(this.imgId); if(imgEl){ imgEl.dom.setAttribute("src",v); } return true; }, destroy : function(){ if(!this.isDestroyed){ Ext.fly(this.btnId).removeAllListeners () ; } Ext.form.ImageField.superclass.destroy.call(this); } }) Ext.reg('imagefield', Ext.form.ImageField);
相关推荐
首先,批量上传图片的核心是利用HTML5的File API,它允许用户在不离开当前页面的情况下读取、处理和上传本地文件。在ExtJS中,我们可以创建一个`Ext.form.Panel`,并在其中包含一个`Ext.form.FileField`组件,该组件...
为了展示上传图片的缩略图,你可以利用HTML5的`FileReader` API读取文件内容,然后创建一个临时的图片元素来显示。在文件选择后,通过监听`change`事件,读取文件内容,转换成Base64编码,然后插入到页面的缩略图...
本文将深入探讨如何使用EXTJS来实现图片上传,包括多图预览、上传以及删除功能,并结合给定的文件名,分析基于JSP的后端处理。 EXTJS是Sencha公司推出的一款JavaScript库,主要用于构建桌面级的Web应用程序。它提供...
在这个项目中,我们可能使用了`Ext.form.Panel`来创建表单,`Ext.ProgressBar`来显示文件上传进度,以及`Ext.window.Window`来弹出图片预览窗口。 2. **多文件上传**:多文件上传功能允许用户一次选择并上传多个...
1. **组件配置**:介绍如何在表单中添加上传字段,如设置`inputType: 'file'`,并配置按钮文本、接受的文件类型等属性。 2. **事件监听**:讲解如何监听`change`事件,当用户选择文件后触发处理函数,获取文件信息,...
ExtJs4.0整合Swfupload上传组件是一个常见的前端开发任务,主要涉及到两个技术:Ext Js和Swfupload。这两个工具结合使用,可以为Web应用提供功能强大的文件上传功能,尤其是对于大文件或者多文件上传场景,它们提供...
在ExtJS中,UploadDialog是一个专为文件上传设计的组件,它提供了用户友好的界面,允许用户选择并上传多个文件到服务器。这篇博客文章(虽然链接无法直接访问,但我们可以根据已知信息推测内容)可能详细介绍了如何...
首先,SWFUpload是一个开源的Flash上传组件,它支持多文件选择、预览、进度条显示等功能,弥补了HTML上传表单的局限性。在ExtJS4中集成SWFUpload,可以借助其强大的特性,提供更丰富的上传体验。 步骤1:引入必要的...
在本文中,我们将深入探讨如何使用ExtJS框架与ASP(Active Server Pages)技术结合,实现一个功能完善的文件上传功能,特别是针对图片和其他类型文件的上传。ExtJS是一款强大的JavaScript库,用于构建桌面级的Web...
首先,ExtJS的文件上传功能通常依赖于其组件系统,特别是`Ext.form.FileField`(也称为`Ext.form.upload.File`),这是一个用于选择文件的输入字段。在多文件上传场景中,我们需要扩展这个组件以允许用户选择多个...
在Web应用中,文件上传是常见的需求,例如用户可能需要上传图片、文档或其他类型的文件。ExtJS 提供了内置的组件和API来处理这种场景。主要涉及的知识点有: 1. **FileInput组件**:这是ExtJS中用于文件选择的组件...
EXTJS的核心是其组件化的架构,提供了一系列可复用的UI组件,包括表格、面板、表单、菜单、工具栏等,使得开发者能够快速创建功能丰富的交互式界面。EXTJS 4.1是对4.0版本的重大升级,它带来了显著的性能提升和众多...
一、ExtJS 文件上传组件 在ExtJS中,我们可以使用`Ext.form.FileField`(又称FileInputField)来创建一个文件选择器,用于用户选择待上传的文件。这个组件提供了基本的文件选择功能,但并不包括实际的上传逻辑。因此...
在实际应用中,可能还需要考虑更多细节,比如进度条显示、多文件上传、图片预览等功能,这需要更复杂的前端交互和后端逻辑。总的来说,理解和掌握这些技术将帮助你构建更强大、更安全的Web应用。
ExtJS 是一个强大的...综上所述,实现ExtJS多文件上传控件涉及到前端的文件选择、表单提交、进度显示,以及后端的文件接收和处理等多个环节。通过熟练掌握这些知识点,你可以创建出高效且用户友好的文件上传功能。
7. **批量上传组件**: 如果EXTJS本身没有内置批量上传解决方案,开发者可能会选择第三方组件,如`EXTJS Uploader`或`EXTJS Grid with FileUploadField`,它们提供了更丰富的上传功能,比如预览、取消上传、多线程...
图片上传功能通常借助于ExtJS的表单组件(`Ext.form.Panel`)和上传字段(`Ext.form.field.File`)。在ExtJS 4.2中,上传组件可能需要配合第三方插件,如SWFUpload或jQuery File Upload,以实现浏览器兼容性和异步...
在EXTJS中,上传图片并实现预览功能可能会遇到一些挑战,特别是在处理浏览器的兼容性问题时。这里我们将深入探讨如何解决EXTJS上传图片无法预览的问题,以及如何优化代码以适应不同浏览器。 首先,我们需要了解...
ExtJS的上传组件就为此目的而设计,它提供了一个用户友好的界面,支持批量上传、进度条显示等功能。 在ExtJS中,上传组件通常基于`Ext.form.FileField`或`Ext.form.Basic`来创建。`Ext.form.FileField`(旧版本中...