<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
xmlns:basic="mxml.basic.*"
xmlns="*" creationComplete="init();"
width="100%" height="100%">
<mx:Script>
<![CDATA[
import flash.events.*;
import flash.net.FileReference;
import mx.controls.Alert;
import mx.events.CloseEvent;
import com.adobe.net.URI;
import com.adobe.net.IURIResolver;
private var file: FileReference;
private function init(): void{
customCodeTypeService=new RemoteObject("customCodeTypeService");
Security.allowDomain("*");
file = new FileReference();
file.addEventListener(ProgressEvent.PROGRESS, onProgress);
file.addEventListener(Event.SELECT, onSelect);
file.addEventListener(Event.COMPLETE, completeHandle);
}
private function completeHandle(event:Event):void{
Alert.show("恭喜你,导入成功");
}
private function upload(): void{
var officeType:FileFilter = new FileFilter("Office文件(*.xls,*.xlsx)","*.xls; *.xlsx");
var allTypes:Array = new Array(officeType);
file.browse(allTypes);
}
private function onSelect(e: Event): void{
Alert.show("导入 " + file.name + " (共 "+Math.round(file.size)+" 字节)?",
"确认导入", Alert.YES|Alert.NO, null, proceedWithUpload);
}
private function onProgress(e: ProgressEvent): void{
lbProgress.text = " 已导入 " + e.bytesLoaded + " 字节,共 " + e.bytesTotal + " 字节";
var proc: uint = e.bytesLoaded / e.bytesTotal * 100;
bar.setProgress(proc, 100);
bar.label= "当前进度: " + " " + proc + "%";
}
private function proceedWithUpload(e: CloseEvent): void{
if (e.detail == Alert.YES){
var uri:URI = new URI(Application.application.url);
//Flex 中取得当前服务IP地址 as3corelib里面的类,所以必须要as3corelib这个包,然后import com.adobe.net.URI;
// FileUploaded是Servlet的名字
var url:String = "http://"+uri.authority+":"+(uri.port=uri.port) + "/CODE/FileUploaded";
var request: URLRequest = new URLRequest(url);
try {
file.upload(request);
} catch (error:Error) {
trace("导入失败");
}
}
systemManager.removeChild(this);
}
]]>
</mx:Script>
<mx:VBox width="100%" horizontalAlign="center">
<mx:Label id="lbProgress" text="导入"/>
<mx:ProgressBar id="bar" labelPlacement="bottom" themeColor="#F20D7A" minimum="0" visible="true" maximum="100" label="当前进度: 0%"
direction="right" mode="manual" width="200"/>
<mx:Button label="导入Excel文件" click="upload();"/>
</mx:VBox>
</mx:Application>
创建Servlet
// FileUploaded是Servlet的名字
package cn.csg.drm.code.servlet;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Iterator;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.springframework.beans.factory.annotation.Autowired;
import com.gdtopway.framework.common.exception.FrameworkException;
import cn.csg.drm.code.domain.CodeString;
import cn.csg.drm.code.service.ICustomCodeTypeService;
/**
* 文件上传Servlet
* @author hujianping
*/
public class FileUploaded extends HttpServlet {
private ICustomCodeTypeService customCodeTypeService;
public ICustomCodeTypeService getCustomCodeTypeService() {
return customCodeTypeService;
}
@Autowired
public void setCustomCodeTypeService(ICustomCodeTypeService customCodeTypeService) {
this.customCodeTypeService = customCodeTypeService;
}
private static final long serialVersionUID = 1707896635884868156L;
// 定义文件的上传路径
public static String uploadPath = "";
public static String name = "";
// 限制文件的上传大小
private int maxPostSize = 100 * 1024 * 1024;
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException{
//获得根目录
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
String uploadPath = request.getSession().getServletContext().getRealPath("\\");
System.out.println("uploadPath"+uploadPath);
//保存文件到服务器中
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setSizeThreshold(4096);
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setSizeMax(maxPostSize);
try {
List fileItems = upload.parseRequest(request);
Iterator iter = fileItems.iterator();
while (iter.hasNext()) {
FileItem item = (FileItem) iter.next();
if (!item.isFormField()) {
name = item.getName();
try {
item.write(new File(uploadPath+ name));
} catch (Exception e) {
e.printStackTrace();
}
}
}
} catch (FileUploadException e) {
e.printStackTrace();
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
public void destroy() {
super.destroy();
}
}
配置web.xml
<servlet>
<description></description>
<display-name>FileUploaded</display-name>
<servlet-name>FileUploaded</servlet-name>
<servlet-class>cn.csg.drm.code.servlet.FileUploaded</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>FileUploaded</servlet-name>
<url-pattern>/FileUploaded</url-pattern>
</servlet-mapping>
<servlet>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
xmlns:basic="mxml.basic.*"
xmlns="*" creationComplete="init();"
width="100%" height="100%">
<mx:Script>
<![CDATA[
import flash.events.*;
import flash.net.FileReference;
import mx.controls.Alert;
import mx.events.CloseEvent;
import com.adobe.net.URI;
import com.adobe.net.IURIResolver;
private var file: FileReference;
private function init(): void{
customCodeTypeService=new RemoteObject("customCodeTypeService");
Security.allowDomain("*");
file = new FileReference();
file.addEventListener(ProgressEvent.PROGRESS, onProgress);
file.addEventListener(Event.SELECT, onSelect);
file.addEventListener(Event.COMPLETE, completeHandle);
}
private function completeHandle(event:Event):void{
Alert.show("恭喜你,导入成功");
}
private function upload(): void{
var officeType:FileFilter = new FileFilter("Office文件(*.xls,*.xlsx)","*.xls; *.xlsx");
var allTypes:Array = new Array(officeType);
file.browse(allTypes);
}
private function onSelect(e: Event): void{
Alert.show("导入 " + file.name + " (共 "+Math.round(file.size)+" 字节)?",
"确认导入", Alert.YES|Alert.NO, null, proceedWithUpload);
}
private function onProgress(e: ProgressEvent): void{
lbProgress.text = " 已导入 " + e.bytesLoaded + " 字节,共 " + e.bytesTotal + " 字节";
var proc: uint = e.bytesLoaded / e.bytesTotal * 100;
bar.setProgress(proc, 100);
bar.label= "当前进度: " + " " + proc + "%";
}
private function proceedWithUpload(e: CloseEvent): void{
if (e.detail == Alert.YES){
var uri:URI = new URI(Application.application.url);
//Flex 中取得当前服务IP地址 as3corelib里面的类,所以必须要as3corelib这个包,然后import com.adobe.net.URI;
// FileUploaded是Servlet的名字
var url:String = "http://"+uri.authority+":"+(uri.port=uri.port) + "/CODE/FileUploaded";
var request: URLRequest = new URLRequest(url);
try {
file.upload(request);
} catch (error:Error) {
trace("导入失败");
}
}
systemManager.removeChild(this);
}
]]>
</mx:Script>
<mx:VBox width="100%" horizontalAlign="center">
<mx:Label id="lbProgress" text="导入"/>
<mx:ProgressBar id="bar" labelPlacement="bottom" themeColor="#F20D7A" minimum="0" visible="true" maximum="100" label="当前进度: 0%"
direction="right" mode="manual" width="200"/>
<mx:Button label="导入Excel文件" click="upload();"/>
</mx:VBox>
</mx:Application>
创建Servlet
// FileUploaded是Servlet的名字
package cn.csg.drm.code.servlet;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Iterator;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.springframework.beans.factory.annotation.Autowired;
import com.gdtopway.framework.common.exception.FrameworkException;
import cn.csg.drm.code.domain.CodeString;
import cn.csg.drm.code.service.ICustomCodeTypeService;
/**
* 文件上传Servlet
* @author hujianping
*/
public class FileUploaded extends HttpServlet {
private ICustomCodeTypeService customCodeTypeService;
public ICustomCodeTypeService getCustomCodeTypeService() {
return customCodeTypeService;
}
@Autowired
public void setCustomCodeTypeService(ICustomCodeTypeService customCodeTypeService) {
this.customCodeTypeService = customCodeTypeService;
}
private static final long serialVersionUID = 1707896635884868156L;
// 定义文件的上传路径
public static String uploadPath = "";
public static String name = "";
// 限制文件的上传大小
private int maxPostSize = 100 * 1024 * 1024;
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException{
//获得根目录
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
String uploadPath = request.getSession().getServletContext().getRealPath("\\");
System.out.println("uploadPath"+uploadPath);
//保存文件到服务器中
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setSizeThreshold(4096);
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setSizeMax(maxPostSize);
try {
List fileItems = upload.parseRequest(request);
Iterator iter = fileItems.iterator();
while (iter.hasNext()) {
FileItem item = (FileItem) iter.next();
if (!item.isFormField()) {
name = item.getName();
try {
item.write(new File(uploadPath+ name));
} catch (Exception e) {
e.printStackTrace();
}
}
}
} catch (FileUploadException e) {
e.printStackTrace();
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
public void destroy() {
super.destroy();
}
}
配置web.xml
<servlet>
<description></description>
<display-name>FileUploaded</display-name>
<servlet-name>FileUploaded</servlet-name>
<servlet-class>cn.csg.drm.code.servlet.FileUploaded</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>FileUploaded</servlet-name>
<url-pattern>/FileUploaded</url-pattern>
</servlet-mapping>
<servlet>