现在的位置: 首页 > 综合 > 正文

Servlet中操作文件

2013年10月06日 ⁄ 综合 ⁄ 共 1335字 ⁄ 字号 评论关闭
 JavaWeb中的文件上传注意事项:
1、也是最容易忽略的一点:把JSP页面的<form>添加ENCTYPE="multipart/form-data"
2、加入第三方文件上传的API到项目中,在这里使用apache的jakarta项目的commons-*包里的API
3、文件上传步骤:
 1)、首先调用ServletFileUpload.isMultipartContent(request)返回一个boolean值,如果是true
 则表示request支持文件上传,这里可以加测试语句,如果是false就知道是在request出了问题,
 可能就是传递request的jsp中的<form>没有添加ENCTYPE="multipart/form-data"
 2)、FileItemFactory factory=new DiskFileItemFactory();
    ServletFileUpload up=new ServletFileUpload(factory);
    Iterator items;//这里使用老式的迭代器,会产生警告,因为没有用泛型,但不用理他
    try{
      items=up.parseRequest(request).iterator();
      while(items.hasNext()){
       FileItem item=(FileItem)items.next();
       if(!item.isFormField()){//如果是文件上传框,则处理文件
        String name=item.getName();//获得上传框中的字符串
        name=name.subString(name.lastIndexOf('//')+1,name.length());//获得上传文件名
        String savePath=request.getRealPath("upload")+File.separatorChar+name;
        //生成保存上传文件的绝对路径,当然可以用绝对路径指定其他保存路径
        //upload是新建的一个文件夹,用来保存上传的文件
        File file=new File(savePath);//获得绝对路径后可以使用File来访问了
        item.write(file);//写入具体的文件内容
       }else if(item.isFormField()){//如果是普通文本输入框
        String data=item.getString();
        if(item.getFieldName().equals("user")){
         user=data;
        }else if(....//如果不是文件上传框则分别获得文本框内容
      }catch(IOException e){
      }catch(Exception e){
      }
    }
注意:在有附件上传功能的页面中,不能使用String name=request.getParameter("name");
这种简单的方式来获取表单提取的资料了

抱歉!评论已关闭.