用JSP编写文件上传

摘自《ChinaAsp》(文/袁毅)

  如过你用VB编写文件上传的组件的话,那么用JAVA编写文件上传的JAVABEAN十分容易。
  下面的例子只是一个简版
package yuanyifileup;
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.PageContext;

public class yuanyifileup
{
    private ServletRequest request;
    private ServletResponse response;
    private ServletConfig config;
    ServletInputStream DATA;
    int FormSize;
    File f1;
    FileOutputStream os;
    DataInputStream is;
    String filename;
    byte[] b;
    byte t;
    boolean flag=false;
    public yuanyifileup()
    { }
    public void initialize(ServletConfig config,HttpServletRequest request,HttpServletResponse response) throws IOException
    {
        this.request=request;
        this.response=response;
        this.config=config;
        DATA = request.getInputStream();
        FormSize=request.getContentLength();
    }
    public void initialize(PageContext pageContext) throws IOException
    {
        request=pageContext.getRequest();
        response=pageContext.getResponse();
        config=pageContext.getServletConfig();
        DATA = request.getInputStream();
        FormSize=request.getContentLength();
    }
    public boolean setFilename(String s)
    {
        try
        {
        File f1=new File(s);
        os=new FileOutputStream(f1);
        }
        catch(IOException e)
        {return(false);}
        return(true);
    }
    public void getByte()
    {
        int i=0;
        try
        {
        is=new DataInputStream(DATA);
        b=new byte[FormSize];
        
        while (true)
        {
            try
            {
                t=is.readByte();
                b[i]=t;
                i++;
            }
            catch(EOFException e)
            { break;}
        }
        is.close();}
        catch(IOException e)
        {}
       }
    
    public boolean save()
    {
        int i=0,start1=0,start2=0;
        String temp="";
        if (!flag)
        {
            getByte();
            flag=true;
        }
        try
        {
        temp=new String(b,"ISO8859_1");
        }
        catch(UnsupportedEncodingException e)
        {return(false);}
        
        start1=temp.indexOf("image/");
        temp=temp.substring(start1);
        
        start1=temp.indexOf("\r\n\r\n");
    
        temp=temp.substring(start1+4);
        start2=temp.indexOf(";\r\n");
        if (start2!=-1)
        {
            temp=temp.substring(0,start2);    
        }
        try
        {
        byte[] img=temp.getBytes("ISO8859_1");
        for (i=0;i<img.length;i++)
         {    os.write(img[i]);    }
         os.close();
         }
         catch(IOException e)
         {return(false);}
         
         return(true);
         
    }
如果有不明白的发E-Mail:yymailbox@263.net.Bye    
    
}