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