`

AsWing+Java上传文件

阅读更多

AsWing+Java上传文件

UI是用AsWing实现比较简单

 

客户端FileUpload.as

package warehousing.view {
	import flash.events.*;
	import flash.net.FileFilter;
	import flash.net.FileReference;
	import flash.net.URLRequest;
	import flash.net.URLRequestMethod;
	
	import org.aswing.AsWingManager;
	import org.aswing.JButton;
	import org.aswing.JFrame;
	import org.aswing.JLabel;
	import org.aswing.JPanel;
	import org.aswing.JTextField;
	import org.aswing.geom.IntDimension;
	
	public class FileUpload extends JFrame{
		
		private var uploadURL:URLRequest;
		
		private var file:FileReference;
		
		private var _frm:JFrame;
		
		private var _mainPanel:JPanel;
		
		private var _filePath:JTextField;
		
		
		private var _browseBtn:JButton;
		
		private var _uploadBtn:JButton;
		
		
		public function FileUpload() {
			
			super(null, "上传", true);
			AsWingManager.initAsStandard(this);
			
			
			uploadURL = new URLRequest();
		
			file = new FileReference();
			configureListeners(file);
			
			_mainPanel = new JPanel();
			
			_filePath = new JTextField("", 40);
			_filePath.setEditable(false);
			
			_browseBtn = new JButton("浏览");
			_browseBtn.addEventListener(MouseEvent.CLICK, __onBrowse);
			
			_uploadBtn = new JButton("上传");
			_uploadBtn.addEventListener(MouseEvent.CLICK, __onUpload);
			_uploadBtn.setVisible(false);
			
			_mainPanel.appendAll(new JLabel("文件"), _filePath, _browseBtn, _uploadBtn);
			
			
			this.getContentPane().append(_mainPanel);
			
			this.setSize(new IntDimension(500, 500));
			this.show();
			
		}
		
		
		private function __onBrowse(event:MouseEvent):void{
			file.browse(getTypes());
		}
		
		
		private function __onUpload(event:MouseEvent):void{
			uploadURL.method = URLRequestMethod.POST;
			uploadURL.contentType = "multipart/form-data";
			uploadURL.url = "http://testadmin2.1001m.com:84/upload";
			
			file.upload(uploadURL, "file", false);
		}
		
		
		private function configureListeners(dispatcher:IEventDispatcher):void {
			dispatcher.addEventListener(Event.CANCEL, cancelHandler);
			dispatcher.addEventListener(Event.COMPLETE, completeHandler);
			dispatcher.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler);
			dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
			dispatcher.addEventListener(Event.OPEN, openHandler);
			dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler);
			dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
			dispatcher.addEventListener(Event.SELECT, selectHandler);
			dispatcher.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA,uploadCompleteDataHandler);
		}
		
		private function getTypes():Array {
			var allTypes:Array = new Array(getXlsTypeFilter(), getImageTypeFilter(), getTextTypeFilter());
			return allTypes;
		}
		
		
		private function getXlsTypeFilter():FileFilter {
			return new FileFilter("Xls (*.xls)", "*.xls");
		}
		
		
		private function getImageTypeFilter():FileFilter {
			return new FileFilter("Images (*.jpg, *.jpeg, *.gif, *.png)", "*.jpg;*.jpeg;*.gif;*.png");
		}
		
		private function getTextTypeFilter():FileFilter {
			return new FileFilter("Text Files (*.txt, *.rtf)", "*.txt;*.rtf");
		}
		
		private function cancelHandler(event:Event):void {
			trace("cancelHandler: " + event);
		}
		
		private function completeHandler(event:Event):void {
			trace("completeHandler: " + event);
		}
		
		private function uploadCompleteDataHandler(event:DataEvent):void {
			trace("uploadCompleteData: " + event);
		}
		
		private function httpStatusHandler(event:HTTPStatusEvent):void {
			trace("httpStatusHandler: " + event);
		}
		
		private function ioErrorHandler(event:IOErrorEvent):void {
			trace("ioErrorHandler: " + event);
		}
		
		private function openHandler(event:Event):void {
			trace("openHandler: " + event);
		}
		
		private function progressHandler(event:ProgressEvent):void {
			var file:FileReference = FileReference(event.target);
			trace("progressHandler name=" + file.name + " bytesLoaded=" + event.bytesLoaded + " bytesTotal=" + event.bytesTotal);
		}
		
		private function securityErrorHandler(event:SecurityErrorEvent):void {
			trace("securityErrorHandler: " + event);
		}
		
		private function selectHandler(event:Event):void {
			var file:FileReference = FileReference(event.target);
			trace("selectHandler: name=" + file.name + " URL=" + uploadURL.url);
			
			this._filePath.setText(file.name);
			
			_uploadBtn.setVisible(true);
			
			
		}
	}
}

 

服务端UploadServlet.java

package com.xlands.ihome2.warehousing;

import java.io.File;
import java.io.IOException;
import java.util.Iterator;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.multipart.commons.CommonsMultipartResolver;

public class UploadServlet extends HttpServlet {

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {

		doPost(req, resp);
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {

		saveFile(req, resp);
	}

	public void saveFile(HttpServletRequest request,
			HttpServletResponse response) throws IllegalStateException,
			IOException {
		
		CommonsMultipartResolver commonsMultipartResolver = new CommonsMultipartResolver(
					request.getSession().getServletContext());
			
		commonsMultipartResolver.setDefaultEncoding("utf-8");

		
		if (commonsMultipartResolver.isMultipart(request)) {
			MultipartHttpServletRequest multipartRequest = commonsMultipartResolver
					.resolveMultipart(request);

			Iterator iter = multipartRequest.getFileNames();

			String webUrl = request.getSession().getServletContext()
					.getRealPath("/"); //  获取当前程序的路径
			File filePath = new File(webUrl + "uploadDir"); //  拼写成完整的路径
			
			if (!filePath.exists()) {
				filePath.mkdirs();
			}
			

			for (; iter.hasNext();) {
				MultipartFile file = multipartRequest.getFile((String) iter
						.next());
				
				if (file != null) {
					File localFile = new File(file.getOriginalFilename());

					String fileName = filePath + File.separator
							+ file.getOriginalFilename(); //  拼成完整的文件保存路径加文件 
					file.transferTo(new File(fileName)); //  保存文件到服务器  

				}
			}

		}
	}

}

 

在web.xml中添加配置

<!-- 上传的servlet -->
	<servlet>
	  <servlet-name>upload</servlet-name>
	  <servlet-class>com.xlands.ihome2.warehousing.UploadServlet</servlet-class>
	  
	  <init-param>
	  	<param-name>method</param-name>
	  	<param-value>saveFile</param-value>	  	  
	  </init-param>
	  
	</servlet>
	
	<servlet-mapping>
	  <servlet-name>upload</servlet-name>
	  <url-pattern>/upload</url-pattern>
	</servlet-mapping>

 

 

附件commons-fileupload-1.2.1.jar

分享到:
评论

相关推荐

    aswing1.5+skinbuilder

    ASwing 是一个基于 Java Swing 的开源项目,它的版本1.5为我们带来了许多增强的功能和改进。Swing 是 Java 标准库中用于构建图形用户界面(GUI)的一部分,而 ASwing 则是对其的一种扩展,提供了更丰富的组件、更...

    Flash之pureMVC,aswing框架Libs文件

    标题中的“Flash之pureMVC,aswing框架Libs文件”指的是两个主要的ActionScript库:PureMVC和AsWing。这两个库都是为在Adobe Flash环境中开发富互联网应用程序(RIA)而设计的,尤其在Flex框架下使用广泛。下面将详细...

    AsWing AEON 皮肤实例

    AsWing是一款流行的Java Swing开发库,它提供了丰富的组件和强大的功能,帮助开发者构建美观、高效的桌面应用程序。Aeon皮肤是AsWing中的一个设计风格,为用户提供了一种现代、简洁的视觉体验。 在AsWing中,皮肤...

    aswing2.0 src

    ASwing本身是一个ActionScript框架,它模仿了Java Swing的设计,为Flash和Flex应用提供了丰富的组件库,使得在这些平台上构建复杂的用户界面变得更为便捷。 在描述中提到,ASwing2.0 SRC是通过SVN(Subversion)...

    AsWing 教程中文版

    创建AsWing项目的初始步骤包括使用FlexBuilder新建一个ActionScript项目,命名为"HelloScheme",并确保在库路径中包含了AsWing库或AsWing.swc文件。 在HelloScheme主类中,我们看到AsWingManager被用来初始化AsWing...

    aswing_a3_1.3.2_allinone

    这通常包括源代码、编译后的二进制文件、API文档、示例程序、安装指南等,使得开发者能够快速地开始使用ASwing_A3进行开发。 在实际应用中,ASwing_A3可能会被用于创建复杂的桌面应用,比如企业级的信息系统、财务...

    Aswing皮肤制作

    Aswing是一个轻量级的图形用户界面(GUI)库,它为Java开发者提供了一种创建美观、交互式的应用界面的方式。在这个教程中,我们将深入探讨Aswing皮肤的工作原理,以及如何通过一系列步骤来设计和应用自定义皮肤。 ...

    AsWing UI源码

    4. AsWing.zip:这个文件很可能是AsWing库的主体部分,包含所有必要的源代码和类库文件。 5. OrangeLAF.zip和FlaSkin.zip:这些可能是预设的皮肤或者外观样式包,分别名为“Orange”和“FlaSkin”。开发者可以导入...

    aswing 帮助文档

    AS3的aswing帮助文档! AS3的程序员必备物品。。详细的介绍哦

    Flash9下as3.0编程的aswing包

    在ASwing_a3_1.2_fl这个文件中,我们可以期待找到ASwing库的特定版本,可能包括类库文件、示例代码、文档或者其他相关资源。这些资源可以帮助开发者快速上手,通过参考示例代码了解如何在实际项目中应用ASwing组件。...

    aswing API

    aswing API,与AsWing Book.pdf一起使用

    ASWING教程

    ### ASWING教程知识点概述 #### 1. 引言:构建用户界面的新方式 - **背景介绍**:随着RIA技术的不断成熟和发展,构建用户界面的方法越来越多。早期使用ActionScript 1.0时,几乎所有的界面元素都需要通过Flash IDE...

    aswing组件知识点

    ### aswing组件知识点详解 #### 1. JPanel与透明度设置 `JPanel`作为Swing中的一个容器组件,主要用于组织其他组件,并提供布局管理功能。在AsWing框架中,用户可以设置`JPanel`的透明度。通过调用`setOpaque(false...

    aswing更换皮肤实例2011

    ASwing是ActionScript 3.0中一个强大的UI组件库,它允许开发者创建出类似Java Swing的用户界面。在2011年的这个实例中,我们将学习如何利用这一功能,为Flash应用程序提供美观且可定制的界面。 首先,了解ASwing库...

    aswing类库

    aswing类库的下载,可以让大家使用现成的布局来显示对象很简单很方便

    AsWing Book.pdf

    AsWing Book.pdfAsWing Book.pdfAsWing Book.pdfAsWing Book.pdf

    ASWing实现中拖放

    ASWing是一个开源的Java库,它扩展了Swing框架,提供了更多的功能和便利性,包括拖放操作的支持。在这个特定的场景中,我们关注的是如何在ASWing环境中实现拖放功能。 首先,了解ASWing的基本结构和设计模式是必要...

    aswing flash ui编程的利器

    在压缩包`aswing_1.5_allinone`中,包含了ASwing的完整版本,可能包含源码、库文件、示例项目和文档等内容。开发者可以通过阅读源码了解其工作原理,参考示例快速上手,同时,文档可以帮助解决在使用过程中遇到的...

    asWing知识点

    根据提供的信息,我们可以总结出以下关于asWing的知识点: ### 1. JPanel与AsWing容器 - **JPanel**:在AsWing中,`JPanel`扮演着一个非常重要的角色,作为容器组件,它能够容纳其他GUI组件。在设置`JPanel`时,...

    aswing 学习资料

    ASwing 是 ActionScript 3.0 的一个库,它为 Adobe Flash 平台提供了类似 Java Swing 的组件框架。这个框架允许开发者构建更复杂的用户界面和应用程序,尤其在 Flash Builder 4 中,可以利用 ASwing 的功能来提升...

Global site tag (gtag.js) - Google Analytics