`
小妞咕嘟
  • 浏览: 9438 次
  • 性别: Icon_minigender_2
社区版块
存档分类
最新评论

使用用uploadFile组件实现简单上传的demo

阅读更多
最近公司做个ftp下载服务器,当然要做后台管理,所以其中也要上传,哎,项目现在需求还是不稳定,天天改啊改,把这个上传的部分跟大家分享下吧,希望大家可以给点意见,我做的支持多文件上传,当然其中我也参考了一些网络资料,起初本来想用swf组件也用上的,但是中间遇到了样式调整问题,而且不好调,就干脆没用啦,
1.jsp 主要代码:
  <script language="javascript">
     var num = 0;
     
     function upload(){
        
        
         document.getElementById("status").innerHTML = "文件上传中...";
         document.getElementById("form").action = "AddFileTest" ;
         document.getElementById("form").submit();
     
}
    function additem(id)
    {
     var row,cell,str;

     row = eval("document.all["+'"'+id+'"'+"]").insertRow();
     if(row != null )
        {
           cell = row.insertCell();
           str="<input type="+'"'+"file"+'"'+"id=uploadFile["+ num +"].file"+  " name=uploadFile["+ num +"].file><input type="+'"'+"button"+'"'+" value="+'"'+"删除"+'"'+" onclick='deleteitem(this,"+'"'+"tb"+'"'+");'>"
          cell.innerHTML=str;
        }
     num++;
    }
    function deleteitem(obj,id)
    {
     var rowNum,curRow;
     curRow = obj.parentNode.parentNode;
     rowNum = eval("document.all."+id).rows.length - 1;
     eval("document.all["+'"'+id+'"'+"]").deleteRow(curRow.rowIndex);
    }
    function callback(msg)
    {
     document.getElementById("status").innerHTML = "文件上传完成...<br>" + msg;
    }
    </script>

</head>
    <body bgcolor="#ffffff">
    <fieldset>
    <div id="status"></div>
  
<form id="form"  name="form"  method="post"  enctype="multipart/form-data">
<table id="tb">
     </table>

<iframe name='hidden_frame' id="hidden_frame" style="display:none"></iframe>
    <input type="button" name="btnAddFile" value="增加文件" onclick="additem('tb')"/>
    <input type="button" name="btnUpload" value="上传" onclick="upload()"/>

</form>
</fieldset>






2.servlet代码:


package download.control;

import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.util.Iterator;
import java.util.List;

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


import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

public class AddFileServlet   extends  HttpServlet  {


public  AddFileServlet(){

super();
}


public void init() throws ServletException {

System.out.println("+++++++++++AddFileServlet++++++++++");
}

public  void  init(ServletConfig  config)  throws  ServletException{

super.init(config);

System.out.println("++++++++ AddFileServlet init(config)  ++++++++") ;

}

   public void destroy() {
super.destroy();

     }

   public void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {

        this.doPost(request, response);
     }


   public void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
   System.out.println("++++++++ AddFileServlet doPost  ++++++++") ;
   response.setContentType("text/html; charset=UTF-8");
   try {
   request.setCharacterEncoding("UTF-8");
   } catch (UnsupportedEncodingException e) {

   e.printStackTrace();
   }
   PrintWriter out = response.getWriter();
  
   /*  定义上传文件的存放路劲*/
      
      String   base   =  request.getSession().getServletContext().getRealPath("")+"\\admin\\upload";
     
      /*定义上传文件的缓存位置*/
     
      String  temPath     =  request.getSession().getServletContext().getRealPath("")+"\\admin\\upload\\temp";
     
     
     /* 当缓存或存储路劲不存在时将自动创建文件*/
      if (!new File(base).isDirectory()){
new File(base).mkdirs();
     
      }
      if(!new File(temPath).isDirectory()){
      new File(temPath).mkdirs();
     
      }
     
      try{
      FileItemFactory factory = new DiskFileItemFactory();
    
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setHeaderEncoding("UTF-8");
upload.setSizeMax(10002400000l);
List<FileItem> items=null;

try{
  items = upload.parseRequest(request);
}catch (FileUploadException e) {
// TODO: handle exception
   e.printStackTrace();
   }
 
Iterator i = items.iterator();
FileItem file = null;
         while (i.hasNext()) {
       FileItem  item = (FileItem) i.next();
        System.out.println(item);
       System.out.println(item.getFieldName());
       System.out.println(item.getName());
       System.out.println(i.hasNext());
      
         
         if(item.isFormField()){
        System.out.println(item.getName());
         }else{
       file =item;
       String fileName =  file.getName();
       System.out.println(fileName);
           if(fileName!=null&&fileName!=""){
          
          /* 得到文件类型 */
              String  fileType = file.getName().substring(file.getName().lastIndexOf("."), file.getName().length());
          
             /* 判断文件类型*/
         
              System.out.println(fileType);
          /*  在本需求中管理员上传文件类型为压缩文件.war/.rar/.giz/.apk*/
             if(fileType.toLowerCase().equals(".rar")||fileType.toLowerCase().equals(".giz")||fileType.toLowerCase().equals(".apk")){
           
               base+="\\RarVsGiz\\" ;
         
                 }else if(fileType.toLowerCase().equals(".txt")||fileType.toLowerCase().equals(".doc")||fileType.toLowerCase().equals(".xls")||fileType.toLowerCase().equals(".pdf")
                
                
                 ||fileType.toLowerCase().equals(".ppt")){
            
                     base+="\\Text\\";
                 
                 }else if(fileType.toLowerCase().equals(".wmv") || fileType.toLowerCase().equals(".rm") || fileType.toLowerCase().equals(".rmvb") || fileType.toLowerCase().equals(".avi")
                  || fileType.toLowerCase().equals(".flv")|| fileType.toLowerCase().equals(".f4v")||fileType.toLowerCase().equals(".mp4")){
                
                     base+="\\Video\\";
                
                 }else if(fileType.toLowerCase().equals(".jpg") || fileType.toLowerCase().equals(".gif") ||fileType.toLowerCase().equals(".bmp") || fileType.toLowerCase().equals(".png")
                 || fileType.toLowerCase().equals(".tif")||fileType.toLowerCase().equals(".jpeg")){
                 
                 base+="\\Images\\";
                
                 }else{
                
                 base+="\\Bad\\" ;
                 }
             
              File  newFile = new File(base+file.getName());
            System.out.println(newFile);
            System.out.println(file);
              file.write(newFile);
              
              base = request.getSession().getServletContext().getRealPath("")+"\\admin\\upload";
             
          }
         
         
         
       }
 
         }
  
     
        }catch (Exception e) {
     // TODO: handle exception
        e.getMessage();
     }
    out.flush();
    out.close();
    response.sendRedirect("uploadSucess.jsp");
   }

  
  
  
}

由于我还没把代码分层好,所以都写在servlet拉,上面代码中特别注意的是:item.isFormField()这个方法,当时我一直以为这个方法时只要得文件信息这个方法就为true值,其实不然,这个方法时判断得到的数据类型是否是普通的表单数据类型,在此,我们的File不是普通的表单数据提交,所以返回值是false,这样在下面判断表单中是否有file文件就可以啦


在web。xml中配置servlet就不要多讲啦吧
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    JAVA 使用uploadFile实现文件上传服务器

    利用fileupload包进行文件的上传,可直接应用。项目里面已经含有了所需要的包

    带进度条的无组件上传

    无组件上传带真实进度条 其中 upload.asp为核心代码,除非特殊需要,一般不需要修改 demo.htm是演示无刷新进度条(IE5.5+支持) demo.asp为处理demo.asp上传的文件,因为演示需要,在Demo.asp中仅仅上传,不作保存...

    一个高速、高效、简洁、安全、支持多组件的上传与提取的系统

    DvFile.Upload v1.0上传组件、IronSoft.Upload上传组件、LyfUpload.UploadFile上传组件、W3.Upload上传组件 2、支持多文件同时上传、Jpeg,Gif图片生成缩略图、生成文字水印、生成图片水印. 3、合理的使用系统缓存...

    无组件上传带真实进度条.rar

    无组件上传带真实进度条 其中 upload.asp为核心代码,除非特殊需要,一般不需要修改 demo.htm是演示无刷新进度条(IE5.5 支持) demo.asp为处理demo.asp上传的文件,因为演示需要,在Demo.asp中仅仅上传,不作...

    Uploadfile 多文件上传

    支持多文件上传,利用了Ajax异步请求方式实现无刷新上传。

    jsp_Uploadfile_2.rar_DEMO

    jsp_Uploadfile_2 demo 2

    jsf2.0 文件上传组件

    由于JSF2.0标准实现没有提供文件上传组件,而实际应用中很多时候需要上传文件,为了方便开发,我做了一个基于JSF2.0的文件上传组件,上传使用的是Apache 的commons-fileupload组件,我已经将commons-fileupload-...

    LyfUpload上传组件

    LyfUpload上传组件

    UpLoadFile MVC完整Demo支持断点续传

    UpLoadFile MVC完整Demo支持断点续传

    Asp无组件上传带进度条 1.0

    Asp无组件上传带进度条 1.0 无组件上传带真实进度条 其中 upload.asp为核心代码,除非特殊需要,一般不需要修改 demo.htm是演示无刷新进度条(IE5.5+支持) demo.asp为处理demo.asp上传的文件,因为演示需要,在...

    无组件上传带真实进度条

    无组件上传带真实进度条 其中 upload.asp为核心代码,除非特殊需要,一般不需要修改 demo.htm是演示无刷新进度条(IE5.5+支持) demo.asp为处理demo.asp上传的文件,因为演示需要,在Demo.asp中仅仅上传,不作保存...

    uploadFile控件上传文件,格式判断

    控件UpdloadFile文件上传eg: string newfilename = file_uploadid.FileName; string size = file_uploadid.PostedFile.ContentLength.ToString(); string type = file_uploadid.PostedFile.ContentType; string ...

    uploadFile

    上传文件demo,android上传图片实例。

    ASP无组件上传

    无组件上传带真实进度条 &lt;br&gt;其中 upload.asp为核心代码,除非特殊需要,一般不需要修改 demo.htm是演示无刷新进度条(IE5.5+支持) demo.asp为处理demo.asp上传的文件,因为演示需要,在Demo.asp中仅仅...

    [上传下载]Ajax UpLoadFile 多个大文件上传控件 v1.15_ltajaxupfilecontrol.zip源码A

    [上传下载]Ajax UpLoadFile 多个大文件上传控件 v1.15_ltajaxupfilecontrol.zip源码A[上传下载]Ajax UpLoadFile 多个大文件上传控件 v1.15_ltajaxupfilecontrol.zip源码A[上传下载]Ajax UpLoadFile 多个大文件上传...

    java实现文件上传到ftp

    java实现文件上传到fpt,里面一些很简单的操作适合初学者。

    UploadFile.class.php支持多文件上传的上传类

    UploadFile.class.php支持多文件上传的上传类 说明:支持多文件上传的上传类 使用方法: include '../UploadFile.class.php'; $upload=new UploadFile(); if(!$upload-&gt;upload()) { // 上传错误提示错误信息 $...

    android 上传文件(UpLoadFile)

    用于文件上传 参数 文件名 上传所用的 UpLoadFile 进程Dialog

    阿德无组件文件上传系统ASP(2012版)

    PK利剑:一个ASP文件,20KB左右,纯ASP无组件上传程序,支持任意扩展名文件的自定义上传,可以控制上传大小,上传至指定文件夹,是否覆盖上传,是否重命名、可使用ASPJPEG组件进行缩图、加水印等各种操作,使用独特...

    微信小程序调用uploadFile向七牛云存储上传图片

    功能: 微信小程序调用uploadFile向七牛云存储上传图片, 其中需要注册七牛的云存储账号, 还需生成七牛的token; 此小程序支持调用手机拍照或者从手机相册中选择照片进行上传.

Global site tag (gtag.js) - Google Analytics