当前位置:  技术问答>java相关

请问如何做文件上传?急呀!来就有分!

    来源: 互联网  发布时间:2015-09-16

    本文导语:  要用jsp编一个文件上传的代码,请各位高手指教!多谢!需要原代码。 | 整程序 -> 一个完整的上传bean   软件名称: 一个完整的上传bean  提交时间: 2001-07-05  作者: popeyelin  提交人:...

要用jsp编一个文件上传的代码,请各位高手指教!多谢!需要原代码。

|
整程序 -> 一个完整的上传bean  
软件名称: 一个完整的上传bean 
提交时间: 2001-07-05 
作者: popeyelin 
提交人: 本站提供  
相关网址: null  
点击次数: 4816  
//Title:        Cnjsps Project
//Version:      
//Copyright:    Copyright (c) 1999
//Author:       Popeye
//Company:      Cnjsp
//Description:  It is for cnjsp

package popeyelin;
import java.io.*;
import javax.servlet.ServletInputStream;
import javax.servlet.http.HttpServletRequest;

public class transfer_multi {
  public String[] sourcefile = new String[255];//源文件名
  public String objectpath = "c:/";//目标文件目录
  public String[] suffix = new String[255];//文件后缀名
  public String[] objectfilename = new String[255];//目标文件名
  public ServletInputStream sis = null;//输入流
  public String[] description = new String[255];//描述状态
  public long size = 100*1024;//限制大小
  private int count = 0;//已传输文件数目
  private byte[] b = new byte[4096];//字节流存放数组
  private boolean successful = true;

  public void setSourcefile(HttpServletRequest request) throws java.io.IOException{
  sis = request.getInputStream();
int a = 0;
int k = 0;
String s = "";
while((a = sis.readLine(b,0,b.length)) != -1){
s = new String(b,0,a);
if((k = s.indexOf("filename=")) != -1){
s = s.substring(k+10);
k = s.indexOf(""");
s = s.substring(0,k);
sourcefile[count] = s;
k = s.lastIndexOf(.);
suffix[count] = s.substring(k+1);
System.out.println(suffix[count]);
       if(canTransfer(count)) transferfile(count);
    }
     if(!successful) break;
}
  }
  public int getCount(){
    return count;
  }
  public String[] getSourcefile(){
   return sourcefile;
  }

  public void setObjectpath(String objectpath){
    this.objectpath = objectpath;
  }
  public String getObjectpath(){
   return objectpath;
  }
  private boolean canTransfer(int i){
     suffix[i] = suffix[i].toLowerCase();
    //这个是我用来传图片的,各位可以把后缀名改掉或者不要这个条件
     if(sourcefile[i].equals("")||(!suffix[i].equals("gif")&&!suffix[i].equals("jpg")&&!suffix[i].equals("jpeg"))) {description[i]="ERR suffix is wrong";return false;}
                    else return true;
  }
  private void transferfile(int i){
    String x = Long.toString(new java.util.Date().getTime());
    try{
    objectfilename[i] = x+"."+suffix[i];
  FileOutputStream out = new FileOutputStream(objectpath+objectfilename[i]);
    int a = 0;
  int k = 0;
    long hastransfered = 0;//标示已经传输的字节数
  String s = "";
  while((a = sis.readLine(b,0,b.length)) != -1){
   s = new String(b,0,a);
   if((k = s.indexOf("Content-Type:")) != -1) break;
  }
  sis.readLine(b,0,b.length);
    while((a = sis.readLine(b,0,b.length)) != -1){
s = new String(b,0,a);
if((b[0]==45)&&(b[1]==45)&&(b[2]==45)&&(b[3]==45)&&(b[4]==45)) break;
out.write(b,0,a);
    hastransfered+=a;
    if(hastransfered>=size){
          description[count] = "ERR The file "+sourcefile[count]+" is too large to transfer. The whole process is interrupted.";
          successful = false;
          break;
    }
  }
      if(successful) description[count] = "Right The file "+sourcefile[count]+" has been transfered successfully.";
      ++count;
      out.close();
      if(!successful){
          sis.close();
          File tmp = new File(objectpath+objectfilename[count-1]);
          tmp.delete();
      }
    }
    catch(IOException ioe){
     description[i]=ioe.toString();
    }

  }

  public transfer_multi(){
   //可以在构建器里面构建服务器上传目录,也可以在javabean调用的时候自己构建
   setObjectpath("/home/www/jspvhost4/web/popeyelin/images/");
  }
}

|
有点麻烦的。
如果用现成的,有smartUpload,比较好用

|
还是用smartupload,很好的

|
建议用jspSmartUpload

|
无非是二进制文件的字节流的读取,传递,重组.

    
 
 

您可能感兴趣的文章:

  • 请问JSP里面怎样实现上传WORD和EXCEL文件,上传之后如何在IE里面调用显示!!!
  • 请问那里有SYBASE的jbdb 2.0下载;jspsmartupload可以直接将文件上传到数据库,请问如何使用
  • 请问ftp上传大小写突然改变跟linux有关吗?
  • 请问用ftp可以不可以把整个目录一起上传。
  • 请问如何确认FTP上传完成。谢谢。
  • 我telnet到linux远程主机,请问如何上传文件???
  • 请问封装好的jsp上传组件有哪些?在哪里下载?jspsmartupload除外
  • 请问如何从windows上传文件到linux服务器?
  • 请问怎样将windows和linux上传下载文件
  • 请问为什么我在页面上加的上传的file不显示?请看代码,
  • 请问我如何能在客户端上传文件到wu-ftp 服务器上?(radhat 7.2)
  • 请问那位高手能帮我解决在jsp中将本地文件上传到数据库服务器的一个字段中的问题
  • 请问:怎么样把上传到服务器的一个记事本文件自动转换成HTML文件?
  • 请问两个问题,http方式的文件上传与下载以及域验证
  • 各位大哥哥好!MM我刚做好了一个小小的个人主页,请问哪儿有免费的jsp空间,还有上传后,怎样与现有的数据库建立连接?
  • 请问在上传文件的jsp页的form里面,除了有一个<input type="file">外,我还有一个附加的文本框用来传其他的信息,为什么我在servlet里面
  • 请问怎么将一个linux下的一个文件夹上传到windows
  • 上传文件到数据库中,请问哪里出错了?
  • 请问那位有原断点续传的原码...(要支持上传和下载)???或者讲讲应该怎么实现...
  • 请问:在配置Qt时,很多文档都说在.profile,.login里加东西,但是我好像没有发现有这两个文件上,请问这些文件在哪个目录下啊
  • 菜问题:请问如何根据文件中的一段内容查找文件路径和文件名称,在线等候
  • 请问有将class文件转换为可执行文件(如Windows下的exe文件)的工具吗?
  • 请问,有什么办法可以把html文件生成pdf/excel格式的文件
  • 请问Qt的工程文件,如何转成VC的工程文件??
  • 请问:proc中的头文件中能包含头文件吗?(感觉如果头文件中包含头文件的话,在链接时就会有错误啊)
  • 请问哪里能找到Curses 的头文件和库文件?
  • 请问用GCC 编译,如何生成MAP文件?就是内存的分布映像文件?
  • 我装了一个cygwin,却说找不到cybiconv-2.dll这个文件。请问这个文件在哪?
  • 如何删除前面有个-的文件,我的根目录下有个文件叫 -C,请问如何删除?
  • 请问LINUX内核下,哪些文件夹下的文件是跟LINUX的硬件平台无关的?
  • 请问如何把.po文件转成.mo文件?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 请问:我知道路由器的telnet密码,但忘记了enable 密码,请问如何是好?
  • 请问最新的reahat9.0是基于什么核心的?2.4?2.6?请问那里能下载?
  • 请问:请问哪里有关于linux基本操作命令讲解的资料下载,最好是幻灯片格式的.
  • 请问,我试图用#admintool&图形工具命令来安装sun workshop5.0,为什么进入的却是用户管理界面?请问具体该如何在solaris下安装应用软件
  • 请问在Redhat 9里,我从登录就是图形介面,请问如何在图形介面内进入命令行方式呢,谢谢
  • 请问玩过SOLARIS的高手门,在不正常关机后,就不能启动到windows公用桌面了,只能在命令提示模式下了,请问怎么解决这个问题啊?急~!~!
  • 请问:我在redhat下装了bochs-2.2.1-1.rpm,.装了后,想设置一下,但找不到bochsrc.fda.bxrc,请问这个文件在哪个曰录下啊。
  • 请问:在GCC里的C程序里的变量的声明是不是只能在前面,而且相同类型的变量的声明只能放在一起?如果不是,请问怎么样可以解决这个问题.
  • 请问各位大虾,小弟今天开始学jsp了,这学期我们有java课,所以已经下载了jdk(好象是1.2),请问我的98环境怎么配置jsp环境呀?我的jdk可以运行.java程序,别的我就不知道了....谢谢!
  • 主机是WIN2000,我用的是LUNIX,请问是否可以共享上网? 如果可以请问如何设置? 500分答谢,龟儿食言!
  • 请问linux下GUI开发的问题!
  • 请问出现fstab文件丢失该怎么修复呀?
  • 请问这个方法如何调用?
  • 请问一个奇怪的问题!
  • 请问在网页中打开的新窗口,如何让其居中。
  • 请问我该学什么了
  • 请问安装zhcon,cxterm问题
  • 非常急! 请问daemontools 在red hat 9下的安装问题? 在线等待
  • 请问如何在一台单机上装VMware的网络访问问题?
  • (急)请问大侠,JDK怎么配置?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3