首页 文萃 技术文档 二手市场 培训机构 e书下载 五星图书 考试资源 软件下载 标准下载 最新资讯
图书资源 留言板 联系我们
JSP上传文件轻松实现|西安信息资源网|E书下载|电子书下载|信息发布


JSP上传文件轻松实现 转帖

推荐人:WD

      现在jsp(SUN企业级应用的首选)被越来越多的人应用在后台程序的开发及动态网页的制作上了,今天就来介绍一下如何用jsp(SUN企业级应用的首选)来实现文件的上传。  

     搞了几天,在网上查了不少资料,终于把上传功能解决了。程序如下: 

 package linkman.helper; 

 import java.io.*; 
 import java.util.*; 
 import javax.servlet.http.HttpServletRequest; 
 import javax.servlet.http.HttpServletResponse; 
 import javax.servlet.ServletInputStream; 

 public class UpLoadBean { 
  private String SavePath = null; 
  private String FileName = null; 
  private String Sperator = null; 
  private String ErrMsg = "正常返回"; 
   
  private byte[] bt = new byte[4096]; 
  private byte[] prebt = new byte[4096]; 
  private int t = -1; 
  private long FileSize = -1; 
  private boolean UserDefineFileName = false; 
   
  ///////////////////////////////////////////////// 
  public UpLoadBean () { 
   FileName = bringFileName (); 
  } 
  public UpLoadBean (String savepath) { 
   SavePath = savepath; 
   FileName = bringFileName (); 
  } 
   
  ///////////////////////////////////////////////// 
  // 文件名信息 
  private String bringFileName () { 
   Calendar dt = Calendar.getInstance (); 
   String str = "" + dt.get (Calendar.YEAR) + dt.get (Calendar.MONTH) + dt.get (Calendar.DAY_OF_MONTH); 
   str = str + dt.get (Calendar.HOUR) + dt.get (Calendar.MINUTE) + dt.get (Calendar.SECOND); 
   return str; 
  } 
   
  public void setFileName (String filename) { 
   FileName = filename; 
   UserDefineFileName = true; 
  } 
  public String getFileName () { 
   return FileName; 
  } 
  ///////////////////////////////////////////////// 
  // 上传文件主程序 
  public boolean UpLoad (HttpServletRequest request) throws Exception { 
   if (SavePath == null) { 
    setErrorMessage ("未设置保存上传文件的路径"); 
    return false; 
   } 
   request.setCharacterEncoding("utf-8"); 
   ServletInputStream in = request.getInputStream (); 
   //////////////////////////////////////////// 
   // 获取得一行的分隔标志 
   t = in.readLine (bt, 0, bt.length); 
   if (t != -1) { 
    Sperator = new String (bt, 0, t); 
    Sperator = Sperator.substring (0, 28); 
    t = -1; 
   } 
    
   //////////////////////////////////////////// 
   // 取扩展名并设定文件全名 
   do { 
    t = in.readLine (bt, 0, bt.length); 
    String s = new String (bt, 0, t); 
    int index = s.indexOf ("filename=\""); 
    if (index != -1) { 
     s = s.substring (index + 10); 
     index = s.indexOf ("\""); 
     s = s.substring (0, index); 
     index = s.lastIndexOf ("."); 
     if (!UserDefineFileName) { 
      FileName = FileName + s.substring (index); // 设定文件全名 
     } 
     t = -1; 
    } 
   } while (t != -1); 
    
   //////////////////////////////////////////// 
   // 取文件内容 
   FileOutputStream out = new FileOutputStream (SavePath + "\\" + FileName); 
    
   t = in.readLine (bt, 0, bt.length); 
   String s = new String (bt, 0, t); 
   int i = s.indexOf ("Content-Type:"); 
   if (i == -1) { 
    setErrorMessage ("上传的不是文件"); 
    return false; 
   } else { 
    in.readLine (bt, 0, bt.length); // 去掉一个空行 
    t = -1; 
   } 
    
   boolean state = true; 
   long trancsize = 0; 
   try { 
    t = in.readLine (bt, 0, bt.length); 
    while (t != -1) { 
     s = new String (bt, 0, t); 
     if (s.length () > 28) { 
      s = s.substring (0, 28); 
      if (s.equals (Sperator)) { 
       break; 
      } 
     } 
      
     /* 
      if (bt[0] == 45 && bt[1] == 45 && bt[2] == 45 && bt[3] == 45 && bt[4] == 45) { 
       break; 
      } 
     */ 
     if (FileSize != -1) { 
      if (trancsize >= FileSize) { 
       throw new Exception ("上传文件太大"); 
      } 
     } 
     out.write (bt, 0, t); 
     trancsize += t; 
     t = in.readLine (bt, 0, bt.length); 
    } 
   } catch (Exception e) { 
    state = false; 
    out.close (); 
    setErrorMessage (e.getMessage ()); 
    File tmp = new File (SavePath, FileName); 
    if (!tmp.delete()) { 
     setErrorMessage (e.getMessage () + ",清除未完成"); 
    } 
   } finally { 
    if (state) { 
     out.close (); 
    } 
    return state; 
   } 
  } 
  ///////////////////////////////////////////////// 
  // 上传文件错误信息 
  public void setErrorMessage (String errormessage) { 
   ErrMsg = errormessage; 
  } 
  public String getErrorMessage () { 
   return ErrMsg; 
  } 
  ///////////////////////////////////////////////// 
  // 文件大小信息 
  public void setFileSize (long size) { 
   FileSize = size; 
  } 
   
  public long getFileSize () { 
   return FileSize; 
  } 
 }// end class 

  

 

[收藏本文]   [发表评论]  [查看评论我要推荐文章

上一篇:jdk6.0 + Tomcat6.0的简单jsp,Servlet,javabean的调试 下一篇:JSP图形验证码的系统设置

最新参与TOP10
ascall码
【经典推荐】每个JAVA初学者都应该搞懂的问题
成功安装Mysql+Apache2+php5过程
五种提高 SQL 性能的方法
配置Eclpise+tomcat并实现JSP的编写与部署
Eclipse 3.0 上配置JSP开发环境
PHP中的XML拉模式详解
php的ajax框架xajax入门与试用
win2000server IIS和tomcat5多站点配置
JSP连接SQL Server 2000系统配置

西安信息资源网 版权所有 全球排名

QQ:363694816