首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 服务器 > Apache >

使用Apache文件下传组件

2012-11-19 
使用Apache文件上传组件例子程序:import java.io.*import java.util.*import javax.servlet.*import ja

使用Apache文件上传组件

例子程序:

import java.io.*;

import java.util.*;

import javax.servlet.*;

import javax.servlet.http.*;

importorg.apache.commons.fileupload.disk.DiskFileItemFactory;

import org.apache.commons.fileupload.servlet.ServletFileUpload;

importorg.apache.commons.fileupload.FileUploadException;

import org.apache.commons.fileupload.*;

?

public class UploadServlet extendsHttpServlet

{

???public void doPost(HttpServletRequest request,

????????????????????? HttpServletResponseresponse)

???????throws IOException, ServletException

??? {

????????????????????????? response.setContentType("text/html;charset=gb2312");

????????????????????????? PrintWriterout=response.getWriter();

?????????????????????????

????????????????????????? //设置保存上传文件的目录

????????????????????????? StringuploadDir=getServletContext().getRealPath("/upload");

????????????????????????? System.out.println(uploadDir);

????????????????????????? if(uploadDir==null)

????????????????????????? {

?????????????????????????????????? out.println("无法访问存储目录");

?????????????????????????????????? System.out.println("无法访问存储目录");

?????????????????????????????????? return;

????????????????????????? }

?????????????????????????

????????????????????????? FilefUploadDir=new File(uploadDir);

????????????????????????? if(!fUploadDir.exists())

????????????????????????? {

?????????????????????????????????? if(!fUploadDir.mkdir())

?????????????????????????????????? {

??????????????????????????????????????????? out.println("无法创建目录");

??????????????????????????????????????????? System.out.println("无法创建目录");

??????????????????????????????????????????? return;

?????????????????????????????????? }

??????????????????????????????????

????????????????????????? }

?????????????????????????

????????????????????????? if(!ServletFileUpload.isMultipartContent(request))

????????????????????????? {

?????????????????????????????????? out.println("只能处理multipart/form-data类型数据");

?????????????????????????????????? System.out.println("只能处理multipart/form-data类型数据");

?????????????????????????????????? return;

????????????????????????? }

?????????????????????????

????????????????????????? DiskFileItemFactorydfif=new DiskFileItemFactory();

????????????????????????? ServletFileUploadsfu=new ServletFileUpload(dfif);

?????????????????????????

????????????????????????? //设置使用临时文件缓存及其临界值,此处为超过1M时使用

????????????????????????? dfif.setSizeThreshold(1024*1024);

????????????????????????? //设置临时文件的存放位置,忽略此语句时采用默认路径

????????????????????????? Filepath=new File("D:\\apache-tomcat\\webapps\\fileupload\\temp");

????????????????????????? dfif.setRepository(path);

?????????????????????????

????????????????????????? //设置请求消息实体内容的最大允许大小,此处设置为2M

????????????????????????? sfu.setSizeMax(1024*1024*2);?????????????

????????????????????????? //设置上传的普通字段的内容和文件字段的文件名所采用的字符集编码

????????????????????????? sfu.setHeaderEncoding("gb2312");

?????????????????????????

????????????????????????? //从HTTP请求消息中解析所有表单字段对象的集合

????????????????????????? ListfileItems=null;

?????????????????????????

????????????????????????? try

????????????????????????? {

?????????????????????????????????? fileItems=sfu.parseRequest(request);

????????????????????????? }

????????????????????????? catch(FileUploadExceptione)

????????????????????????? {

?????????????????????????????????? out.println("解析数据时出现如下问题:");

?????????????????????????????????? System.out.println("解析数据时出现如下问题:");

?????????????????????????????????? e.printStackTrace(out);

?????????????????????????????????? return;

????????????????????????? }

?????????????????????????

????????????????????????? //处理每个表单字段

????????????????????????? Iteratori=fileItems.iterator();

????????????????????????? while(i.hasNext())

????????????????????????? {

?????????????????????????????????? FileItemfi=(FileItem)i.next();

?????????????????????????????????? //处理普通字段

?????????????????????????????????? if(fi.isFormField())

?????????????????????????????????? {

??????????????????????????????????????????? Stringcontent=fi.getString("gb2312");

??????????????????????????????????????????? StringfieldName=fi.getFieldName();

??????????????????????????????????????????? request.setAttribute(fieldName,content);

?????????????????????????????????? }

?????????????????????????????????? //处理文件字段

?????????????????????????????????? else

?????????????????????????????????? {

??????????????????????????????????????????? try

??????????????????????????????????????????? {

???????????????????????????????????????????????????? StringpathSrc=fi.getName();

???????????????????????????????????????????????????? //如果用户没有选择上传的文件,忽略处理

???????????????????????????????????????????????????? if(pathSrc.trim().equals(""))

???????????????????????????????????????????????????? {

???????????????????????????????????????????????????????????? continue;

???????????????????????????????????????????????????? }

???????????????????????????????????????????????????? //处理用户上传的文件

???????????????????????????????????????????????????? intstart=pathSrc.lastIndexOf('\\');

???????????????????????????????????????????????????? StringfileName=pathSrc.substring(start+1);

???????????????????????????????????????????????????? FilepathDest=new File(uploadDir,fileName);

???????????????????????????????????????????????????? fi.write(pathDest);

???????????????????????????????????????????????????? StringfieldName=fi.getFieldName();

???????????????????????????????????????????????????? request.setAttribute(fieldName,fileName);

????????????????????????? ????????????????? }

??????????????????????????????????????????? catch(Exceptione)

??????????????????????????????????????????? {

???????????????????????????????????????????????????? out.println("存储文件时出现如下问题:");

???????????????????????????????????????????????????? e.printStackTrace(out);

???????????????????????????????????????????????????? return;

??????????????????????????????????????????? }

??????????????????????????????????????????? finally

??????????????????????????????????????????? {

???????????????????????????????????????????????????? fi.delete();

??????????????????????????????????????????? }

?????????????????????????????????? }

????????????????????????? }

????????????????????????? //显示处理结果

????????????????????????? out.println("用户:"+request.getAttribute("author")+"<br>");

????????????????????????? out.println("来自:"+request.getAttribute("company")+"<br>");

????????????????????????? StringBufferfilelist=new StringBuffer();

????????????????????????? Stringfile1=(String)request.getAttribute("file1");

????????????????????????? makeUpList(filelist,file1);

????????????????????????? Stringfile2=(String)request.getAttribute("file2");

????????????????????????? makeUpList(filelist,file2);

????????????????????????? out.println("成功上传文件:"+(filelist.length()==0?"无":filelist.toString()));

??? }

???

???private void makeUpList(StringBuffer result,String fragment)

??? {

??? ???????? if(fragment!=null)

??? ???????? {

??? ???????????????? if(result.length()!=0)

??? ???????????????? {

??? ????????????????????????? result.append(",");

??? ???????????????? }

??? ???????????????? result.append(fragment);

?????}

??? }

}

热点排行