`
onlydo
  • 浏览: 168810 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

附件上传方案

阅读更多
使用swfupload.http://swfupload.googlecode.com

<script type="text/javascript" src="http://localhost/extjs/ux/SwfUploadPanel.js"></script>
<script type="text/javascript" src="http://localhost/extjs/ux/swfupload.js"></script>

{
				id :'uploads',				
				xtype :'uploadDisplayField',
				isFormField: true,
				fieldLabel : '附件'
			}

按钮事件动作如下:
var win = new Ext.Window( {
			title:'附件上传',
			height: 300,
			width : 420,			
			plain : true,
			modal : true,
			shadow : true,
			border : false,						
			layout:'fit',
			items : [new Ext.ux.SwfUploadPanel({		        
		        frame: true,
		        //border: false,		        
		        flash_url:Ext.STATIC_URL+'extjs/ux/swfupload.swf',
				post_params : {
		                    'infoId': this.fp.form.findField('ID').getValue()
		                },
		        upload_url : Ext.WEB_URL+'admin/info/uploadAttachment.do',
		        listeners: {
		            fileUploadSuccess:function(panel,file,data){		                
		                Ext.getCmp('uploads').addFile(data.id,data.name);		                		                
		            },
		            scope:this
	            }
		    })]
		});
		win.show();

swfupload只是完成附件的上传功能。通常还要在表单中添加附件的列表展示,添加附件删除功能。
Ext.ux.UploadDisplayField = Ext.extend(Ext.Component, {
    autoEl: {
        tag: 'div'
    },
    onRender: function() {
        this.autoEl = Ext.apply({}, this.initialConfig, this.autoEl);
        Ext.ux.UploadDisplayField.superclass.onRender.apply(this, arguments);
        this.el.on('load', this.onLoad, this);
    },    
    onLoad: function() {
        this.fireEvent('load', this);
    },    
    addFile: function(id,name) {    	   	
    	var html = '<tpl for="."><span id="{ID}"><a href="#">{NAME}</a> <a href="#" class="file-delete" id="file-{ID}">删除</a> </tpl>';
		var tpl = new Ext.XTemplate(html);	
		tpl.overwrite(this.el,[{ID:id,NAME:name}]);
		this.getEl().on('click', function(e, t) {
		    e.stopEvent();		   
		    var id=t.id.substr(5);
		    Ext.Ajax.request( {
				url : Ext.WEB_URL+'admin/info/attachmentDelete.do',
				params : {
					'id' : id
				},
				method : 'POST',
				success : function(response) {
					var r = Ext.decode(response.responseText);
					if (!r.success)
						Ext.Msg.alert('提示信息',
								'数据删除失败,由以下原因所致:<br/>' + (r.msg ? r.msg
										: '未知原因'));
					else {
						var span = Ext.getDom(id);
						span.parentNode.removeChild(span);
					}
				},
				scope : this
			});
		}, null, {delegate: 'a.file-delete'});
    },
    loadFiles:function(data){
    	var html = '<tpl for="."><span id="{ID}"><a href="#">{NAME}</a> <a href="#" class="file-delete" id="file-{ID}">删除</a> </tpl>';
		var tpl = new Ext.XTemplate(html);		
		tpl.overwrite(this.el,data);
		this.getEl().on('click', function(e, t) {
		    e.stopEvent();		    
		    var id=t.id.substr(5);
		    Ext.Ajax.request( {
				url : Ext.WEB_URL+'admin/info/attachmentDelete.do',
				params : {
					'id' : id
				},
				method : 'POST',
				success : function(response) {
					var r = Ext.decode(response.responseText);
					if (!r.success)
						Ext.Msg.alert('提示信息',
								'数据删除失败,由以下原因所致:<br/>' + (r.msg ? r.msg
										: '未知原因'));
					else {
						var span = Ext.getDom(id);
						span.parentNode.removeChild(span);
					}
				},
				scope : this
			});
		}, null, {delegate: 'a.file-delete'});		
    }
});
Ext.reg('uploadDisplayField', Ext.ux.UploadDisplayField);

服务器端代码:
class UploadAttachment(webapp.RequestHandler):
    def get(self):
        self.post()
    def post(self):        
        self.response.headers['Content-Type'] = 'text/x-json;charset=UTF-8'        
        infoId = self.request.get('infoId')             
        fileName = self.request.get('Filename')
        data=self.request.get('Filedata')
        attachment = models.Attachment()
        attachment.ext=fileName[ - 3:]
        attachment.name=fileName[: - 4][:10]
        attachment.content=data
        attachment.info=infoId
        attachment.put()
        self.response.out.write(simplejson.dumps({'success':True,'id':str(attachment.key()),'name':attachment.name}))

分享到:
评论

相关推荐

    php+html5多进程实现超大附件无刷新上传(更优方案)

    php+html5多进程实现超大附件无刷新上传,支持超大...前面还发过一个PHP+H5的大附件上传方案,核心原理和这个差不多,我个人更倾向于此方案,我在项目里使用的也是这种方案。 前端后端功能可根据自己需要进行扩充。

    jquery实现多附件上传

    "jquery实现多附件上传"这个主题涉及到的是利用jQuery来创建一个功能,允许用户在网页上选择并上传多个文件。这在现代网页应用中是非常常见的需求,比如论坛、社交媒体或者在线协作平台。 在jQuery中实现多附件上传...

    maximo系统附件上传功能的实现

    在Maximo中,附件上传功能是企业用户常用的一项特性,允许用户将相关的文档、图片或其他数据与资产、工单等对象关联,以便于信息共享和协作。本篇文章将详细介绍如何在Maximo 7.5系统中实现附件上传功能,并说明这一...

    大附件上传代码

    8. **文档支持**:`Documentation.url`指向的可能是详细的使用说明或开发者指南,帮助用户理解如何配置和使用这套大附件上传解决方案。 总结来说,大附件上传是一个涉及多方面技术的复杂问题,包括文件分块、断点续...

    layui多附件上传.rar

    总结来说,"layui多附件上传.rar"是一个包含完整功能的多文件上传解决方案,它利用layui的upload模块实现了前端交互,并且提供了完善的后台操作。对于需要在项目中集成多文件上传功能的开发者,这是一个值得参考和...

    PHPCMS V9 修改flash上传为H5上传方案

    本方案旨在将PHPCMS V9 的原始Flash上传功能修改为H5上传,以适应现代浏览器的需求。 首先,我们需要了解Flash上传和H5上传的区别。Flash上传是基于Adobe Flash技术实现的文件上传功能,但在一些现代设备和浏览器中...

    v9修改flash附件上传为h5上传.zip

    【标题】"v9修改flash附件上传为h5上传.zip"是一个针对PHPCMS V9内容管理系统(CMS)的更新包,旨在解决由于谷歌浏览器不再支持Flash导致的附件上传问题。Flash技术在过去常用于网页上的多媒体内容展示和交互,包括...

    126/163网盘附件上传jsp

    标题中的“126/163网盘附件上传jsp”指的是使用JSP(JavaServer Pages)技术实现的126和163邮箱网盘的附件上传功能。126和163是中国知名的电子邮件服务提供商,它们提供的网盘服务允许用户存储和分享文件。在这一...

    DK异站附件上传插件

    综上所述,DK异站附件上传插件是一款全面优化论坛附件上传体验的解决方案,适用于不同版本的论坛系统,不仅提高了上传速度和稳定性,还提供了丰富的管理功能,为用户带来更加优质的社区交流环境。通过其强大的功能和...

    多附件上传demo.zip

    在IT行业中,多附件上传是一项常见的功能,尤其在企业级应用和协作平台中。这个"多附件上传demo.zip"提供了一个简单的多附件上传案例,它适用于开发者在进行类似功能开发时参考。本案例主要涉及的技术栈是Struts,这...

    webupload附件上传

    总的来说,WebUpload作为一个高效的前端附件上传解决方案,不仅简化了开发过程,还提供了丰富的定制选项,使得开发者可以根据项目需求创建出符合用户体验的文件上传功能。无论是个人项目还是企业级应用,WebUpload都...

    使用WebService上传一个附件或者多个附件的实现方式

    5. **多附件上传**:对于多附件的处理,服务端接口需要设计为能接受多个文件参数,或者提供一个可以多次调用的接口。客户端则需要循环调用服务,将每个文件作为单独的参数传递。 6. **安全性考虑**:在传输敏感数据...

    大附件上传支持2G文件

    在IT行业中,大附件上传是许多应用程序和网络服务的核心功能,尤其对于企业级协作平台、云存储服务以及文件分享站点来说至关重要。标题“大附件上传支持2G文件”表明我们讨论的是一个能够处理大型文件(最大2GB)的...

    类似于网易附件上传源码

    "类似于网易附件上传源码" 提供了一种实现文件上传的解决方案,这通常涉及到前端用户界面的设计,后端服务器的处理,以及可能的数据存储策略。接下来,我们将深入探讨这一主题,涵盖相关知识点。 首先,我们需要...

    附件上传控件SWFUpload+JAVA

    总的来说,这个项目提供了一个完整的基于SWFUpload的Java附件上传解决方案,适合那些需要处理大量用户文件上传需求的Web应用。开发者可以参考该项目的源码,学习如何结合JavaScript和Java来实现高效的文件上传功能。

    上传附件到指定服务器API接口

    "上传附件到指定服务器API接口"这一主题,主要涉及的是如何通过API来实现文件的上传服务。下面将详细阐述这个过程以及相关的知识点。 1. API接口设计: - 接口定义:一个上传附件的API通常包含一个URL(统一资源...

    spring mvc 多附件上传

    总的来说,这个资源包提供的就是一个从前端到后端的完整多附件上传解决方案。通过jQuery插件处理前端的文件选择和上传,Spring MVC控制器接收并处理这些文件,确保了文件上传功能的实现。在实际应用中,根据项目需求...

    关于附件上传文件名包含特殊字符的问题解决办法

    ### 关于附件上传文件名包含特殊字符的问题解决办法 #### 背景介绍 在互联网应用开发中,经常需要处理用户上传的附件。这些附件可能包括文档、图片、视频等多种类型。然而,在实际操作过程中,可能会遇到一个常见...

    asp.net多附件上传实例代码

    在ASP.NET中,多附件上传是一项常见的功能,它允许用户一次性上传多个文件,例如图片、文档或其他类型的文件。本实例代码旨在提供一个详尽的解决方案,涵盖了多种不同的实现方法。以下将详细介绍这些方法及其关键...

    附件上传和下载的内容

    根据提供的文件信息,我们可以深入探讨有关“附件上传和下载”的技术细节,特别是涉及到前端与Java后端的交互过程。下面将详细介绍几个关键知识点: ### 一、MiniUI 附件上传 **MiniUI** 是一个轻量级的JavaScript...

Global site tag (gtag.js) - Google Analytics