Flex和Servlet结合上传文件
1、准备工作
(1)下载文件上传的组件,commons-fileupload-1.3.1.jar
(2)下载文件输入输出jar,commons-io-2.4.jar
(3)有关servlet的jar包,servlet-api.jar
2、正式开发
(1)新建一个web项目project,FlexFileUpload
(2)在src新建一个上传文件的servlet
FlexFileUploadServlet.java:
package com.you.upload.servlet;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
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.FileItemFactory;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
public class FlexFileUploadServlet extends HttpServlet
{
/**
* @Fields serialVersionUID:序列化
*/
private static final long serialVersionUID = -6839362803884547766L;
/**
* Constructor of the object.
*/
public FlexFileUploadServlet()
{
super();
}
/**
* Destruction of the servlet. <br>
*/
public void destroy()
{
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
/**
* The doGet method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to get.
*
* @param request
* the request send by the client to the server
* @param response
* the response send by the server to the client
* @throws ServletException
* if an error occurred
* @throws IOException
* if an error occurred
*/
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
super.doGet(request, response);
doPost(request, response);
}
/**
* The doPost method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to
* post.
*
* @param request
* the request send by the client to the server
* @param response
* the response send by the server to the client
* @throws ServletException
* if an error occurred
* @throws IOException
* if an error occurred
*/
@SuppressWarnings("rawtypes")
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
/**
* 防止中文乱码
*/
response.setContentType("text/html;charset=gb2312");
/**
* 设置编码格式
*/
response.setCharacterEncoding("utf-8");
/**
* 创建一个工厂类
*/
FileItemFactory factory = new DiskFileItemFactory();
/**
* 上传对象
*/
ServletFileUpload upload = new ServletFileUpload(factory);
try {
List items = upload.parseRequest(request);
Iterator it = items.iterator();
while (it.hasNext())
{
FileItem item = (FileItem) it.next();
/**
* 推断是表单域
*/
if (item.isFormField())
{
System.out.println("一个表单域");
}
else
{
/**
* 处理文件上传
*/
System.out.println("不是一个表单域");
String fileName = item.getName();
byte[] data = item.get();
/**
* 获取文件上传路径
*/
String file = getServletConfig().getInitParameter("file");
String fileFolderName = getServletContext().getRealPath(file + "\\" + fileName);
try {
FileOutputStream fileOutSt = new FileOutputStream(fileFolderName);
try
{
fileOutSt.write(data);
fileOutSt.close();
}
catch (IOException exception)
{
exception.printStackTrace();
}
}
catch (FileNotFoundException exception)
{
exception.printStackTrace();
}
}
}
}
catch (FileUploadException exception)
{
exception.printStackTrace();
}
}
/**
* Initialization of the servlet. <br>
*
* @throws ServletException
* if an error occurs
*/
public void init() throws ServletException
{
// Put your code here
}
}
(3)配置web.xml
(4)打开Flash Builder,新建Flex项目FileUpload.mxml:
3、执行结果(1)初始化时
(2)上传文件
(3)上传文件之前serverfile目录
(4)上传文件之后serverfile目录