要弄一个上传文件的东西,真是困难啊——对我来说。从网上找了很多资料,最后选择了比较成熟的组件进行传递。前台用Ext.ux.UploadDialog组件,后台用cos组件。由于对EXT不熟悉,中间遇到了很多困难,所幸在网上有人帮助——谢谢Ghost_520,最终得以完成。
总结一下:
1.中文文件名乱码的问题:前台jsp页面与后台jsp页面都要统一编码,尤其是需要添加
contentType="text/html; charset=utf-8" pageEncoding="utf-8"
语句,无论是utf-8或是gbk。
2.后台返回到前台的状态语句是
response.getWriter().print("{success:true,message:'上传成功'}");
在UploadDialog组件中解析responseText,并最终生成JSON格式,不过在后台Jsp页面的<body></body>直接不能有语句,否则UploadDialog组件会连同body直接的语句一起解析,则无法得到正确的值。
这是最终的代码
前台JSP
view plaincopy to clipboardprint?
<html>
<head>
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>上传页面</title>
<link rel="stylesheet" type="text/css" href="ext-2.2/resources/css/ext-all.css" mce_href="ext-2.2/resources/css/ext-all.css" />
<link rel="stylesheet" type="text/css" href="UploadDialog/css/Ext.ux.UploadDialog.css" mce_href="UploadDialog/css/Ext.ux.UploadDialog.css" />
<mce:script type="text/javascript" src="ext-2.2/adapter/ext/ext-base.js" mce_src="ext-2.2/adapter/ext/ext-base.js"></mce:script>
<mce:script type="text/javascript" src="ext-2.2/ext-all.js" mce_src="ext-2.2/ext-all.js"></mce:script>
<mce:script type="text/javascript" src="UploadDialog/Ext.ux.UploadDialog.packed.js" mce_src="UploadDialog/Ext.ux.UploadDialog.packed.js"></mce:script>
<mce:script type="text/javascript"><!--
Ext.onReady(function() {
var dialog = new Ext.ux.UploadDialog.Dialog({
autoCreate: true,
closable: true,
collapsible: false,
draggable: true,
minWidth: 400,
minHeight: 200,
width: 400,
height: 350,
permitted_extensions:['JPG','jpg','jpeg','JPEG','GIF','gif','pdf','txt','jar'],
proxyDrag: true,
resizable: true,
constraintoviewport: true,
url: 'upLoad.jsp',
reset_on_hide: false,
allow_close_on_upload: true
});
dialog.show('show-button');
});
// --></mce:script>
</head>
<body>
</body>
</html>
<html>
<head>
<%@ page language="java" contentType="text/html; charset=utf-8"pageEncoding="utf-8"%>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>上传页面</title>
<link rel="stylesheet" type="text/css" href="ext-2.2/resources/css/ext-all.css" mce_href="ext-2.2/resources/css/ext-all.css" />
<link rel="stylesheet" type="text/css" href="UploadDialog/css/Ext.ux.UploadDialog.css" mce_href="UploadDialog/css/Ext.ux.UploadDialog.css" />
<mce:script type="text/javascript" src="ext-2.2/adapter/ext/ext-base.js" mce_src="ext-2.2/adapter/ext/ext-base.js"></mce:script>
<mce:script type="text/javascript" src="ext-2.2/ext-all.js" mce_src="ext-2.2/ext-all.js"></mce:script>
<mce:script type="text/javascript" src="UploadDialog/Ext.ux.UploadDialog.packed.js" mce_src="UploadDialog/Ext.ux.UploadDialog.packed.js"></mce:script>
<mce:script type="text/javascript"><!--
Ext.onReady(function() {
var dialog = new Ext.ux.UploadDialog.Dialog({
autoCreate: true,
closable: true,
collapsible: false,
draggable: true,
minWidth: 400,
minHeight: 200,
width: 400,
height: 350,
permitted_extensions:['JPG','jpg','jpeg','JPEG','GIF','gif','pdf','txt','jar'],
proxyDrag: true,
resizable: true,
constraintoviewport: true,
url: 'upLoad.jsp',
reset_on_hide: false,
allow_close_on_upload: true
});
dialog.show('show-button');
});
// --></mce:script>
</head>
<body>
</body>
</html>
后台JSP
view plaincopy to clipboardprint?
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ page import="java.io.*" %>
<%@ page import="com.oreilly.servlet.*" %>
<%@ page import="com.oreilly.servlet.multipart.*" %>
<%@ page contentType="text/html;charset=utf-8" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>上传后台页面</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<%
//文件上传后,保存在D:\\upload
String saveDirectory = "D:\\upload";
//每个文件最大5m,最多3个,所以总文件大小为(以字节为单位)
int maxPostSize = 3*5*1024*1024;
//保存文件 response的编码为utf-8,
MultipartRequest multi = new MultipartRequest(request,saveDirectory,maxPostSize,"utf-8");
//输出反馈信息
Enumeration files = multi.getFileNames();
while(files.hasMoreElements()){
String name = (String)files.nextElement();
File f = multi.getFile(name);
// if(f!=null){
// String fileName = multi.getFilesystemName(name); 获得文件名
// String lastFileName = saveDirectory+"\\"+fileName; 显示保存路径
// out.println("上传的文件:"+lastFileName);
// out.println("<hr>");
// }
}
System.out.println("上传成功");
response.setContentType("text/html;charset=utf-8");
response.getWriter().print("{success:true,message:'上传成功'}");
%>
</head>
<body>
</body>
</html>
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ page import="java.io.*" %>
<%@ page import="com.oreilly.servlet.*" %>
<%@ page import="com.oreilly.servlet.multipart.*" %>
<%@ page contentType="text/html;charset=utf-8" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>上传后台页面</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<%
//文件上传后,保存在D:\\upload
String saveDirectory = "D:\\upload";
//每个文件最大5m,最多3个,所以总文件大小为(以字节为单位)
int maxPostSize = 3*5*1024*1024;
//保存文件 response的编码为utf-8,
MultipartRequest multi = new MultipartRequest(request,saveDirectory,maxPostSize,"utf-8");
//输出反馈信息
Enumeration files = multi.getFileNames();
while(files.hasMoreElements()){
String name = (String)files.nextElement();
File f = multi.getFile(name);
// if(f!=null){
// String fileName = multi.getFilesystemName(name); 获得文件名
// String lastFileName = saveDirectory+"\\"+fileName; 显示保存路径
// out.println("上传的文件:"+lastFileName);
// out.println("<hr>");
// }
}
System.out.println("上传成功");
response.setContentType("text/html;charset=utf-8");
response.getWriter().print("{success:true,message:'上传成功'}");
%>
</head>
<body>
</body>
</html>
最终结果如图
var dialog = new Ext.ux.UploadDialog.Dialog({
autoCreate: true, //自动会创建要渲染的元素
closable: false, //可以关闭
collapsible: true,//可以收缩
draggable: true,//可以拖拽
minWidth: 400, //最小宽度
minHeight: 200,//最小高度
width: 400, //宽度
height: 350,//高度
proxyDrag: true, //拖拽时会请求一个代理
resizable: true, //窗体可以改变大小
constraintoviewport: true, //窗体在viewport中可见
title: 'File upload queue.', //标题
url: 'upload.asp', //上传的url
reset_on_hide: false, //重置后隐藏
post_var_name: 'extfile',//提供后台获取的名称
allow_close_on_upload: false //是否允许上传中关闭
});
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/xiaoyao6650/archive/2009/03/14/3987865.aspx
分享到:
相关推荐
Ext.ux.UploadDialog批量上传文件实例是一个基于ExtJS组件库扩展插件的文件上传解决方案,主要针对需要一次性处理多个文件上传的应用场景。ExtJS是一个强大的JavaScript框架,它提供了丰富的用户界面组件,而Ext.ux....
通过"UploadDialog"这个压缩包,你可以获取到EXTjs的上传对话框组件,将其整合到你的项目中,快速实现文件上传功能,提升应用的交互性和功能完整性。记得在实际使用时,根据项目的具体需求对UploadDialog进行适当的...
Ext.ux.UploadDialog是Ext JS库的一个...总的来说,`ext.ux.uploadDialog`实例是Ext JS应用中实现高效、用户体验良好文件上传功能的有效工具。通过灵活配置和事件处理,开发者可以定制满足特定需求的文件上传对话框。
本文将深入探讨“ext多文件上传控件Ext.ux.UploadDialog”的使用方法及其常见问题。该控件作为ExtJS库的一个扩展,为用户提供了一种方便的多文件选择和上传的界面。 首先,Ext.ux.UploadDialog是一个基于ExtJS框架...
使用Ext.ux.UploadDialog扩展时,开发者需要在Ext JS应用中引入这个组件的JavaScript文件,并进行适当的配置,例如指定上传URL、设置上传参数等。以下是一个简单的使用示例: ```javascript Ext.onReady(function()...
Ext.ux.UploadDialog是一款在ExtJS框架下使用的扩展组件,它提供了一种用户友好的文件上传界面和功能。这个组件通常被用于Web应用程序,让用户能够方便地上传文件到服务器,而无需离开当前页面或者打开新的浏览器...
总之,`Ext.ux.UploadDialog`是一个强大且易于使用的文件上传解决方案,它结合了ExtJS的灵活性和易用性,为开发者提供了构建高效、用户友好的文件上传功能。无论是在企业级应用还是个人项目中,它都是一个值得考虑的...
4. **文件类型检查**:根据应用需求,`UploadDialog3_x`可以配置以限制可上传的文件类型,如只允许上传图片、文档等特定格式的文件,防止不合适的文件被上传。 5. **文件大小限制**:为了防止大文件上传导致服务器...
在EXT应用中使用EXT.ux.UploadDialog时,开发者需要配置插件的相关参数,如URL(服务器端处理文件上传的地址)、文件类型限制、最大上传文件大小等。同时,为了实现良好的用户体验,可能还需要自定义对话框的样式和...
### ExtJS 多文件上传 UploadDialog For ExtJS3.x #### 概述 在Web开发领域,特别是使用ExtJS框架进行界面设计时,文件上传功能是必不可少的一部分。然而,随着ExtJS版本的更新,原有的多文件上传组件可能不再兼容...
在"struts+extjs实现UploadDialog"这个主题中,我们主要讨论如何利用Struts和ExtJS来创建一个文件上传对话框。UploadDialog通常是一个交互式的用户界面,允许用户选择本地文件并将其上传到服务器。 首先,让我们从...
在本文中,我们将深入探讨如何使用Ext.ux.UploadDialog组件结合FTP(文件传输协议)来实现异步上传功能,这是在ExtJs框架下进行Web应用开发时一个实用的技术点。Ext.ux.UploadDialog是一个第三方扩展,它为ExtJs提供...
在ExtJS中,有时候我们需要处理文件上传的功能,这时就涉及到了"Ext.ux.dialog"和"Common-fileupload"这两个关键概念。 **Ext.ux.dialog** Ext.ux.dialog是ExtJS的一个扩展组件库,它为用户提供了一些额外的对话框...
"Ext.ux.UploadDialog3.0"标签表明这是一个基于EXT(ExtJS)框架的文件上传插件,ExtJS是Sencha公司开发的一个用于构建富互联网应用(RIA)的JavaScript库。UploadDialog组件通常提供一个用户友好的界面,允许用户...
总之,UploadDialog.rar提供的上传组件是基于Ext技术实现的,旨在为Web应用提供便捷、功能全面的文件上传功能。开发者需要具备Ext.js的使用经验和基本的服务器端交互知识才能有效地集成和使用这个组件。通过深入学习...
EXT3.0引入了UploadDialog组件,为开发者提供了一个优雅的解决方案,使得在Web应用中处理文件上传变得更加简单和直观。 UploadDialog.js是这个功能的核心文件,它包含了EXT3.0文件上传对话框的具体实现。这个组件...
- `b2b/Ext.ux.UploadDialog.js`: 文件上传对话框组件。 ##### 2.1 页面布局实现 在实际应用中,可以通过ExtJs的布局管理器来实现页面的布局设计。下面是一个简单的例子,展示了如何使用ExtJs的BorderLayout布局...
- **文件上传组件**:如`b2b/Ext.ux.UploadDialog.js`,用于实现文件上传功能。 **二、实例开发** 这里我们以产品中心的产品信息查询为例,展示如何使用ExtJS进行实际开发。 1. **页面布局** 页面整体采用...