由于近段时间产品中需要加上上传组件,之前考虑过jQuery,但是现有项目是用ext完成的。所以使用了
Ext.ux.UploadDialog进行实现,遇到的第一个问题就是该Ext组件是批量上传组件,但是产品中只允许单个上传,通过对
源码的查看,发觉只要在添加文件时进行过滤就可以了。过滤代码如下:
//定义文件添加事件
dialog.on('fileadd', function(){
var tb = this.grid_panel.getBottomToolbar();
if(this.grid_panel.getStore().getCount() > 1){
extWarn('每次只能上传一张背景图片!');
this.grid_panel.getSelectionModel().selectLastRow();
var selections = this.grid_panel.getSelectionModel().getSelections();
this.fsa.postEvent('remove-files', selections);
}
});
具体API就不多说了。
官方网站:http://www.max-bazhenov.com/dev/upload-dialog-2.0/index.php
效果如下:
完整的代码如下:
1.前台代码:
/*
异步上传背景图片
*/
function upload(code){
var dialog = new Ext.ux.UploadDialog.Dialog({
title: '上传背景图片(<a style="color:red">请注意:每次只能上传一张图片</a>)',
url: 'mapConfigAction_uploadImage.action',
base_params: {
proCode: 'china'
},
post_var_name: 'uploadifyFiles',
width: 450,
height: 200,
minWidth: 450,
minHeight: 200,
draggable: true,
resizable: true,
constraintoviewport: true,
permitted_extensions: ['JPG', 'jpg', 'jpeg', 'JPEG', 'GIF', 'gif', 'png', 'PNG'],
modal: true,
reset_on_hide: false,
allow_close_on_upload: false, //关闭上传窗口是否仍然上传文件
upload_autostart: false
});
dialog.on('uploadsuccess',function(dialog, filename){
Ext.MessageBox.alert('成功提示','文件上传完成!');
dialog.hide();
});
//定义上传完成
dialog.on('uploadcomplete', function(){
Ext.MessageBox.alert('成功提示','文件上传完成!');
dialog.hide();
});
//定义文件添加事件
dialog.on('fileadd', function(){
var tb = this.grid_panel.getBottomToolbar();
if(this.grid_panel.getStore().getCount() > 1){
extWarn('每次只能上传一张背景图片!');
this.grid_panel.getSelectionModel().selectLastRow();
var selections = this.grid_panel.getSelectionModel().getSelections();
this.fsa.postEvent('remove-files', selections);
}
});
//显示上传框
dialog.show();
}
2.struts2后台代码:
/**
* 上传图片保存到报表端.
*
* @throws IOException
* @throws SQLException
*
*/
private void save2Report(String proCode) throws IOException, SQLException {
String path = "";
if (StringUtils.equals(CHINA, proCode)) {
path = AQSConstant.REPORT_CHINA_MAP_IMAGE_PATH;
} else {
path = AQSConstant.REPORT_PROVINCE_IMAGE_PATH + this.proCode + ".jpg";
}
// 根据路径写入图片
writeImage(path);
}
/**
* 根据传入图片路径写入图片.
*
* @param path
* 图片路径
* @throws IOException
* @throws SQLException
*/
private void writeImage(String path) throws IOException, SQLException {
int len = 0;
FileInputStream fis = new FileInputStream(getUploadifyFiles()[0]);
FileOutputStream fos = FileUtils.openFileOutputStream(new File(path));
byte[] buffer = new byte[fis.available()];
while ((len = fis.read(buffer)) > 0) {
fos.write(buffer, 0, len);
}
fos.flush();
fos.close();
}
分享到:
相关推荐
Ext.ux.UploadDialog是Ext JS库的一个扩展组件,主要用于实现用户友好的文件上传对话框。这个组件在Web应用中非常实用,特别是在需要处理大量文件上传或者需要用户交互确认的场景下。下面我们将深入探讨`ext.ux....
这个"Ext.ux.UploadDialog.zip"压缩包包含了EXTjs的UploadDialog组件,方便开发者在自己的项目中直接使用。 UploadDialog组件的核心功能是提供一个用户友好的界面,让用户能够选择并上传文件到服务器。这个组件通常...
The class is ready for i18n, override the Ext.ux.UploadDialog.Dialog.prototype.i18n object with your language strings, or just pass i18n object in config. Server side handler. The files in the queue...
Ext.ux.UploadDialog批量上传文件实例是一个基于ExtJS组件库扩展插件的文件上传解决方案,主要针对需要一次性处理多个文件上传的应用场景。ExtJS是一个强大的JavaScript框架,它提供了丰富的用户界面组件,而Ext.ux....
本文将深入探讨“ext多文件上传控件Ext.ux.UploadDialog”的使用方法及其常见问题。该控件作为ExtJS库的一个扩展,为用户提供了一种方便的多文件选择和上传的界面。 首先,Ext.ux.UploadDialog是一个基于ExtJS框架...
在使用 Ext.ux.UploadDialog 进行文件上传时,客户端与服务器端的交互是一个关键环节。Ext.ux.UploadDialog 是一个 ExtJS 框架的扩展组件,它提供了一个友好的用户界面来处理文件上传。在服务器端,我们需要正确解析...
Ext.ux.UploadDialog是一款在ExtJS框架下使用的扩展组件,它提供了一种用户友好的文件上传界面和功能。这个组件通常被用于Web应用程序,让用户能够方便地上传文件到服务器,而无需离开当前页面或者打开新的浏览器...
总之,`Ext.ux.UploadDialog`是一个强大且易于使用的文件上传解决方案,它结合了ExtJS的灵活性和易用性,为开发者提供了构建高效、用户友好的文件上传功能。无论是在企业级应用还是个人项目中,它都是一个值得考虑的...
在实际项目中,`UploadDialog3_x`组件的使用需要配合Ext的其他组件和API,例如,可能需要结合`GridPanel`来展示已上传的文件列表,或者使用`Form`来收集与上传文件相关的元数据。同时,为了保证其正常工作,开发者还...
为了创建一个UploadDialog,你可以使用`Ext.window.Window`或`Ext.container.Viewport`来创建一个弹出窗口,里面包含一个`Ext.form.FormPanel`,并在其中添加`FileField`。当用户选择文件并点击提交按钮时,ExtJS会...
在EXT应用中使用EXT.ux.UploadDialog时,开发者需要配置插件的相关参数,如URL(服务器端处理文件上传的地址)、文件类型限制、最大上传文件大小等。同时,为了实现良好的用户体验,可能还需要自定义对话框的样式和...
在本文中,我们将深入探讨如何使用Ext.ux.UploadDialog组件结合FTP(文件传输协议)来实现异步上传功能,这是在ExtJs框架下进行Web应用开发时一个实用的技术点。Ext.ux.UploadDialog是一个第三方扩展,它为ExtJs提供...
`Ext.ux.Utils.FSA`类用于实现基于状态转换的逻辑,它的核心是定义一个状态转换表,该表描述了在不同状态下收到特定事件时应采取的动作。这种设计模式非常适合处理具有复杂状态转换的应用场景,如文件上传过程中的...
在实际应用中,使用"Ext.ux.dialog UploadDialog"可能会涉及以下步骤: 1. **配置和创建对话框**:首先需要在ExtJS应用中定义UploadDialog的配置,包括其大小、样式、按钮布局等,然后通过这些配置创建对话框实例。...
UploadDialog.rar是一个包含上传组件的压缩包...开发者需要具备Ext.js的使用经验和基本的服务器端交互知识才能有效地集成和使用这个组件。通过深入学习和实践,你可以创建出满足特定需求的高效上传功能,提升用户体验。
在"EXT3的文件上传"这一主题中,我们主要讨论的是如何在EXT3文件系统环境中进行文件上传,并且这个过程可能涉及到一个名为"Ext.ux.UploadDialog3.0"的插件。 在EXT2文件系统中,文件上传是通过标准的文件操作接口...
10.12 表格与树形的结合——Ext.ux.tree.ColumnTree 第11章 其他布局类简介 11.1 标准布局类 11.1.1 折叠布局——AccordionLayout 11.1.2 边框布局——BorderLayout 11.1.3 卡片式布局——CardLayout 11.1.4 ...