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