`
董瑞龙
  • 浏览: 106899 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

GXT 文件上传

阅读更多

关于GWT的文件上传网上有封装比较好的例子 大家可以搜索:gwtextux。

gwtextux是基于GWT-EXT开发的。本文写的是针对GXT组件开发的文件上传例子。

 

GXT 文件上传主要分五步:

 

第一步,设置Form的提交属性

 

 

// 选择上传路径 form
FormPanel formPanel = new FormPanel ();
// 设置form参数MULTIPART
formPanel.setEncoding (FormPanel.Encoding.MULTIPART);
// 设置提交方式POST
formPanel.setMethod (FormPanel.Method.POST);
// 设置上传请求地址
formPanel.setAction ("fileupload.do");
 

 

第二步:添加上传组件

 

// 文件选择
FileUploadField fileUploadField = new FileUploadField ();
fileUploadField.setFieldLabel ("请选择上传文件");
fileUploadField.setName ("file");

 

  第三步:提交按钮

 

Button button = new Button ("上传");
        button.addListener (Events.OnClick, new Listener <BaseEvent> ()
        {
            @Override
            public void handleEvent (BaseEvent be)
            {
                formPanel.submit ();
            }

 

  第四步:后台接受上传流的Servlet

 

public void doPost (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    {

        // 获取上传句柄
        ServletFileUpload upload = new ServletFileUpload ();
        FileItemIterator iter;
        HttpSession session = request.getSession ();
        // 获取文件长度
        String fileSizeString = request.getHeader ("Content-Length");

        //将文件长度转化为数字
        String sourceidString = null;
        try
        {
            // 从request中获取参数
            iter = upload.getItemIterator (request);
            while (iter.hasNext ())
            {
                FileItemStream item = iter.next ();
                // 资源名称
                if (TermStrings.SOURCE_FILED.equals (item.getFieldName ()))
                {
                    InputStream stream = item.openStream ();
                    sourceidString = Streams.asString (stream, "utf-8");
                                  }
                // 获取文件输入流
                if ("file".equals (item.getFieldName ()))
                {
                    // 获得系统时间
                    BufferedInputStream bin = new BufferedInputStream (item.openStream ());
                    // 获得文件路径
                    String filePath = getServletContext ().getRealPath ("后台存储文件.xls");
                  
                    File file = new File (filePath);
		    // 创建写文件的流
                    BufferedOutputStream bout = new BufferedOutputStream (new FileOutputStream (file));
                    byte[] b = new byte[8 * 1024];

                    int i = bin.read (b);
                    while (i > 0)
                    {
		        //写入文件
                        bout.write (b, 0, i);
                        i = bin.read (b);
                    }
                    bout.flush ();
                    bout.close ();

  第五步:web.xml

 

 

 <servlet-mapping>
    <servlet-name>FileUpload</servlet-name>
    <url-pattern>/fileupload.do</url-pattern>
  </servlet-mapping>

    <servlet>
    <servlet-name>FileUpload</servlet-name>
    <servlet-class>net.carefx.term.server.servlet.FileUpload</servlet-class>
  </servlet>
 

 

如果要实现读取进度,我的做法是时间轮训,通过后台获取文件长度:

        String fileSizeString = request.getHeader ("Content-Length");

总长度,然后根据文件写入流的写入次数判断写入的百分比。将此数据在前台显示。

文件上传需要使用第三方jar包

 

commons-fileupload-1.2.1.jar


分享到:
评论
7 楼 董瑞龙 2011-03-14  
kannif2005 写道
請問,如何自動產生上傳後的影片縮圖?

我没有做过类似工作,但是我想生产缩略图的操作应该是后台java实现,然后将缩略图返回给前台。
6 楼 kannif2005 2011-03-13  
請問,如何自動產生上傳後的影片縮圖?
5 楼 659的典藏 2011-02-17  
恩,2010的后台代码简洁明了,很不错。学习了...刚开始学习EXT,还有许多问题不明白,持续学习ing
4 楼 zyengogo 2011-02-10  
原来整这个 整了个多附件上传
3 楼 mealoneone 2011-01-09  
Lz可以考虑一下GWTupload这个上传组件解决上传进度条的问题。
我在项目就是用这个组件来实现的。
但是这个组件好像有个bug,就是该组件的重置功能有点问题。。
2 楼 董瑞龙 2010-12-27  
lovexp2010 写道
前面写得挺好的,后台那段代码不敢恭维。
既然用了fileupload ,你就使用它提供的方法呀,何必自己“纯手工”再写一次。

String path =  req.getSession().getServletContext().getRealPath("/");

FileItemFactory factory = new DiskFileItemFactory();

ServletFileUpload upload = new ServletFileUpload(factory);

List items = null;
try {
	items = upload.parseRequest(req);
} catch (FileUploadException e) {
	e.printStackTrace();
	return ;
}

Iterator iter = items.iterator();
while (iter.hasNext()) {
    FileItem item = (FileItem) iter.next();
    if (item.getName() == null || item.getName().trim().equals(""))
	continue;
    String filename = getFileName();
    if ( ! item.isFormField()) {
    	File uploadedFile = new File("replace with your file name");
    	try {
	   item.write(uploadedFile);
        } catch (Exception e) {
	e.printStackTrace();
	return null;
} 
}
}



你看,还支持同时上传多个文件。

推荐 使用 swfupload

谢谢,学习了。我之前手工写流是想做上传进度展示。
1 楼 lovexp2010 2010-12-27  
前面写得挺好的,后台那段代码不敢恭维。
既然用了fileupload ,你就使用它提供的方法呀,何必自己“纯手工”再写一次。

String path =  req.getSession().getServletContext().getRealPath("/");

FileItemFactory factory = new DiskFileItemFactory();

ServletFileUpload upload = new ServletFileUpload(factory);

List items = null;
try {
	items = upload.parseRequest(req);
} catch (FileUploadException e) {
	e.printStackTrace();
	return ;
}

Iterator iter = items.iterator();
while (iter.hasNext()) {
    FileItem item = (FileItem) iter.next();
    if (item.getName() == null || item.getName().trim().equals(""))
	continue;
    String filename = getFileName();
    if ( ! item.isFormField()) {
    	File uploadedFile = new File("replace with your file name");
    	try {
	   item.write(uploadedFile);
        } catch (Exception e) {
	e.printStackTrace();
	return null;
} 
}
}



你看,还支持同时上传多个文件。

推荐 使用 swfupload

相关推荐

    gwt , gxt文件上传

    而GXT是基于GWT的UI库,提供了丰富的组件和更美观的界面设计,尤其在数据网格、图表和文件上传等交互功能上表现优秀。 文件上传在Web应用中是一项常见需求,GWT和GXT都提供了相应的解决方案。在GWT中,文件上传通常...

    X_GXT_Editor-V-2-3_gta_

    GXT文件是Rockstar Games为《侠盗猎车手》系列游戏开发的一种特殊格式,用于存储游戏中的各种文本,包括菜单选项、对话、提示等。 这款编辑器的主要功能包括: 1. **文本编辑**:用户可以打开并编辑GXT文件,查看...

    GXT 软件包和API

    **GXT软件包和API详解** GXT,全称为GWT Ext,是基于Google Web Toolkit (GWT) 的一个强大的Java UI库。它为开发者提供了丰富的用户界面组件和功能,使得构建复杂的、企业级的Web应用程序变得更加便捷。GXT不仅在...

    GXT:反编译的 GTA 文本行

    该存储库包含反编译的GXT文件和它们的编译器。 运行build_[game]_[platform].bat为您想要的游戏快速构建 GXT。 反编译的 GXT 使用原始源的语法将 GXT 文件反编译为 TXT。 字符串大多按照它们在原始源文件中的顺序...

    american.gxt

    这是GTA4里的源文件american.gxt

    Gxt,包含resource

    "包含resource"这部分意味着压缩包中可能包含了GXT库的资源文件,这些文件通常包括CSS样式表、图像、本地化字符串等,它们对于自定义GXT组件的外观和行为至关重要。资源文件使得开发者可以通过简单的配置改变应用的...

    GXT组件使用教程

    **压缩包子文件的文件名称列表**: 1. **初识ExtGWT.docx**: 这份文档将引导我们进入GXT的世界,涵盖其核心概念和基础用法,例如如何创建一个新的GXT项目,如何添加组件,以及如何处理用户交互。 2. **GXT组件...

    Gxt_BLOG(GXt项目)

    **GXT项目详解** GXT,全称是GWT eXtensions,是Sencha公司为Google Web Toolkit(GWT)开发的一套丰富的用户界面组件库。GXT项目旨在为Web应用程序提供桌面级别的用户体验,利用JavaScript和HTML5技术,使得在...

    gxt初学进阶教程

    以下是根据提供的文件内容总结出的详细知识点: ### 什么是ExtGWT(GXT) ExtGWT(GXT)是一个为GWT项目提供的扩展工具库。它利用了GWT框架的能力,允许Java开发者使用Java语言编写Web界面应用程序,相当于Web上的...

    GXT 学习的好书

    ### GXT学习的好书知识点详解 #### 一、GXT简介 GXT(GXT是Ext GWT的简称)是一款基于Google Web Toolkit (GWT) 的开源Java库,用于构建高性能的企业级富客户端应用程序。GXT 提供了丰富的UI组件集合、数据网格以及...

    gxt2.1-api.CHM

    gxt是ext使用gwt api开发的一套东东。比使用原始gwt开发是要轻松一些的。

    GXT Cascade ComboBox Samples

    在IT行业中,GXT(Ext GWT)是一种用于构建富客户端Web应用的JavaScript库,它基于Google的GWT(Google Web Toolkit)。GXT提供了一系列组件,使得开发者可以创建功能丰富的用户界面,类似于桌面应用程序的体验。...

    gxt-1.2.3.jar.zip

    标题 "gxt-1.2.3.jar.zip" 指的是一个包含GXT库的压缩文件,版本为1.2.3。GXT,全称为Google Web Toolkit EXT,是Google Web Toolkit(GWT)的一个扩展,它提供了一系列丰富的用户界面组件,用于构建功能强大的Web...

    GXT v2.2.1 API doc

    在自定义GXT应用的外观时,了解此CSS文件可以帮助开发者更好地调整和定制GXT组件的样式。 3. **索引和概述** `index-all.html` 是完整的类和接口索引,方便开发者查找特定的API。`overview-tree.html` 提供了一个...

    gwt + gxt jar包

    在【压缩包子文件的文件名称列表】中,"gwt+gxt"可能表示的是包含GWT和GXT库的JAR文件,例如GWT的gwt-user.jar、gwt-dev.jar以及GXT的gxt.jar、gxt-theme-neptune.jar等。这些JAR文件通常需要添加到项目的类路径中,...

    一步一步教你新建GXT项目

    4. **创建GXT模块**:打开`src/main/java`目录下的`com.yourcompany.yourproject.gwt/YourProject.gwt.xml`文件,添加以下GXT依赖: ```xml &lt;inherits name='com.extjs.gxt.ui.GXT' /&gt; ``` 5. **创建第一个GXT...

    gwt gxt demo

    至于文件 "client",这通常是GWT项目中的一个关键部分,包含了所有与客户端相关的代码,如用户界面、事件处理、业务逻辑和本地化的JavaScript代码。在GWT项目中,`client`目录通常包括以下几个子目录: 1. `src` - ...

    gxt-2.2.5.zip

    《GXT 2.2.5:Ext-GWT的增强工具包详解》 GXT,全称为GWT eXtension,是由EXTJS团队开发的一个用于Google Web Toolkit(GWT)的扩展库,旨在为GWT开发者提供更丰富、更强大的用户界面组件和功能。GXT 2.2.5是该系列...

    gxt-api-2.2.5 doc

    1. **gxt-javadoc.css**:这是样式表文件,用于定义文档的呈现样式,使文档更易阅读和导航。 2. **index-all.html**:整体索引页面,列出所有类和接口,是快速查找和定位API的入口。 3. **overview-tree.html**:...

Global site tag (gtag.js) - Google Analytics