fileupload上传代码

fileupload上传代码

import  java.io.IOException;
import  java.io.PrintWriter;

import  javax.servlet.ServletException;
import  javax.servlet.http.HttpServlet;
import  javax.servlet.http.HttpServletRequest;
import  javax.servlet.http.HttpServletResponse;

import  org.apache.commons.fileupload. * ;
import  java.util. * ;
import  java.util.regex. * ;
import  java.io. * ;
import  java.net.ResponseCache;

import  org.apache.commons.fileupload.servlet. * ;
import  org.apache.commons.fileupload.disk.DiskFileItemFactory;

/*
 * 创建日期 2005-4-10
 *
 * TODO 要更改此生成的文件的模板,请转至
 * 窗口 - 首选项 - Java - 代码样式 -代码模板
 
*/


/**
 * 
@author gaolong1
 * 
 * TODO 要更改此生成的类型注释的模板,请转至 窗口 - 首选项 - Java - 代码样式 -代码模板
 
*/

public   class  upload  extends  HttpServlet
{

    
/**
     * Destruction of the servlet. <br>
     
*/

    
private String uploadPath = "D:/upload/"// 用于存放上传文件的目录

    
private File tempPath = new File("D:/upload/tmp/"); // 用于存放临时文件的目录

    
public void destroy()
    
{
        
super.destroy(); // Just puts "destroy" string in log
        
// Put your code here
    }


    
/**
     * 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
     
*/

    
public void doPost(HttpServletRequest req, HttpServletResponse res)
            
throws ServletException, IOException
    
{
        res.setContentType(
"text/html; charset=GB2312");
        PrintWriter out 
= res.getWriter();
        System.out.println(req.getContentLength());
        System.out.println(req.getContentType());
        DiskFileItemFactory factory 
= new DiskFileItemFactory();
        
// maximum size that will be stored in memory
//         设置最多只允许在内存中存储的数据,单位:字节
//         设置一旦文件大小超过getSizeThreshold()的值时数据存放在硬盘的目录
        factory.setSizeThreshold(4*1024);
        
// the location for saving data that is larger than getSizeThreshold()
        factory.setRepository(new File("d:/upload/addnetFile/temp"));

        ServletFileUpload upload 
= new ServletFileUpload(factory);
        
// maximum size before a FileUploadException will be thrown
//         设置允许用户上传文件大小,单位:字节
        
        
int maxUploadSize = 2*1024*1024;
        upload.setSizeMax(maxUploadSize);
        System.out.println(
"ww");
        
try
        
{
            List fileItems 
= upload.parseRequest(req);
            System.out.println(fileItems.size());
            System.out.println(fileItems.get(
0));
            
// assume we know there are two files. The first file is a small
            
// text file, the second is unknown and is written to a file on
            
// the server
            Iterator iter = fileItems.iterator();

            
// 正则匹配,过滤路径取文件名
            String regExp = ".+//(.+)$";

            
// 过滤掉的文件类型
            String[] errorType =
            
".exe"".com"".cgi"".asp" };
            Pattern p 
= Pattern.compile(regExp);
            
while (iter.hasNext())
            
{
                System.out.println(
"FileItem");
                FileItem item 
= (FileItem) iter.next();
                
// 忽略其他不是文件域的所有表单信息
                System.out.println("aaaaaaaaa");
                System.out.println(item.getContentType());
                System.out.println(
"aaaaaaaaa");
                
if (!item.isFormField())
                
{
                    System.out.println(
"bbbbbbbbbbb");
                    String name 
= item.getName();
                    
long size = item.getSize();
                    
if ((name == null || name.equals("")) && size == 0)
                        
continue;
                    
if(size > maxUploadSize)
                    
{
                        out.println(
"<script>alert('您上传的文件超过允许的大小,请重新上传此文件!')</script>");
                        
continue;
                    }

                    Matcher m 
= p.matcher(name);
                    
boolean result = m.find();
                    
if (result)
                    
{
                        
for (int temp = 0; temp < errorType.length; temp++)
                        
{
                            
if (m.group(1).endsWith(errorType[temp]))
                            
{
                                
throw new IOException(name + ": wrong type");
                            }

                        }

                        
try
                        
{
                            
                            Calendar calendar 
= Calendar.getInstance();
                            String year 
= new Integer( calendar.get(Calendar.YEAR)).toString();
                            String month 
= new Integer( calendar.get(Calendar.MONTH) + 1).toString();
                            String day 
= new Integer( calendar.get(Calendar.DATE)).toString();
                            String hour 
= new Integer( calendar.get(Calendar.HOUR_OF_DAY)).toString();
                            String minute 
= new Integer( calendar.get(Calendar.MINUTE)).toString();
                            String second 
= new Integer( calendar.get(Calendar.SECOND)).toString();

                            
// 保存上传的文件到指定的目录

                            
// 在下文中上传文件至数据库时,将对这里改写
                            
//不要直接用d:/这样跨平台不行,改成相对路径
                            
                            String uploadPath 
= "d:/" + year + "/" + month + "/" + day + "/";
                            String uploadFileName 
= year + month + day + hour + minute + second + m.group(1);
                            
                            File uploadDir 
= new File(uploadPath);
                            
                            
if(!uploadDir.exists())
                            
{
                                
if(uploadDir.mkdirs())
                                
{
                                    System.out.println(
"success");
                                }

                                
else
                                
{
                                    System.out.println(
"create dir faile");
                                }

                            }

                            
                            
                            
//File uploadFile = new File(uploadPath + uploadFileName);
                            
//uploadFile.createNewFile();
                            
                            
//item.write(new File("d:/" + m.group(1)));
                            
                            item.write(
new File(uploadPath + uploadFileName));
                            
                            System.out.println(uploadFileName 
+ "  " + size + "<br>");
                        }

                        
catch (Exception e)
                        
{
                            out.println(e);
                        }


                    }

                    
else
                    
{
                        
throw new IOException("fail to upload");
                    }

                }

            }

        }

        
catch (IOException e)
        
{
            out.println(e);
        }

        
catch (FileUploadException e)
        
{
            out.println(e);
        }


        
// 保存上传的文件到指定的目录

        
// 在下文中上传文件至数据库时,将对这里改写

    }


    
protected void doGet(HttpServletRequest request,
            HttpServletResponse response) 
throws ServletException, IOException
    
{
        
// TODO Auto-generated method stub
    }


    
/**
     * Initialization of the servlet. <br>
     * 
     * 
@throws ServletException
     *             if an error occure
     
*/

    
public void init() throws ServletException
    
{
        
// Put your code here
    }


}

 

html测试代码

<! DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd" >
< html >
< head >
< meta  http-equiv ="multipart"  content ="form-data; charset=UTF-8" >
< title > Insert title here </ title >
</ head >
< body >
    
< form  id ="form1"  name ="form1"  enctype ="multipart/form-data"  method ="post"  action ="FileUpload" >
        
< input  id =aa  name =file1  type ="file" />
        
< input  id =bb  name =file2  type ="file" />
        
< input  type ="submit"  name ="Submit"  value ="submit"   />
    
</ form >
</ body >
</ html >

这两段代码都能正确执行.

但我遇到一个怪问题,不知是tomcat的问题,还是哪的问题,这两段代码三个月前我写的时候能正确运行,昨天我重新试了半天,却不能运行了,也没报错,就是上传不了,今天,我什么都没改,却又能运行了,怪了,昨天我重起过tomcat,都不行.在我的编程经历中,遇到过好几次这样的情况,不知是怎么回事

补记:

用common-fileupload上传文件有个小地方一定要注意,即<input id=aa name=file1 type=file/>中的name一定要写,如果没写就会出现我上面的错误,上传不了文件,但却不报错.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值