·软件知识库 ·模板素材库
注册 | 登录

您所在的位置: INDEX > j2se > 批量下载附件

批量下载附件

许杰 Sun Jul 05 12:01:51 CST 2015 字号:

一、客户需求:

        用户在搜索结果中对需要下载的文档进行选择,系统将选定的一批搜索结果批量下载到服务器上预定义好的目录,然后下载到用户自己的电脑中。

二、解决方案:

   1、将选择的NOTE文档中的附件集中拆离到服务器上的指定目录中,

  2、将指定的目录压缩;

  3、返回链接给用户,用户自己下载保存。

三、程序代码:

import lotus.domino.*;
import java.io.*;  
import java.util.*;
import java.io.File;
import org.apache.tools.zip.*;
import java.lang.NullPointerException;


public  class  CDGGzip  

{  
  
  private File srcPath =null;
  private String outFilename;
  private int len;
  private String filenames;
    
  public void setSrcPath(String src){
     srcPath=new File(src);
     
      
  }
  
  public File getSrcPath(){
     return srcPath;
  }
  
  public void setOutFilename(String out){
     outFilename=out;
  }
  
  public String getOutFilename(){
     return outFilename;
  }  
  
  //======删除文件夹

  public static void deletefile(String delpath)  
  throws  IOException,FileNotFoundException {    
    
         
          File file = new File(delpath);
          if (!file.isDirectory()) {
              file.delete();
          }
          else if (file.isDirectory()) {
               String[] filelist = file.list();
               for (int i = 0; i < filelist.length; i++) {
                    File delfile = new File(delpath + "\\" + filelist[i]);
                    if (!delfile.isDirectory())
                        delfile.delete();
                    else if (delfile.isDirectory())
                         deletefile(delpath + "\\" + filelist[i]);
          }
        file.delete();
      }
             
  }  
  
  //======

//压缩文件

备注:本段程序只做了对统一文件夹下的文件压缩,如果要对子目录压缩,还需要各位自己改改程序
  public void gzip(){
   
     byte[] buf = new byte[1024];
     
     try {
           len=srcPath.listFiles().length;
           String[] filenames = new String[len];
           outFilename=new String(srcPath+".zip");
           File[]  files  =  srcPath.listFiles(); 
               
           for(int  i=0;i<len;i++)
           
           {

             // if(files[i].isDirectory())
                     
                filenames[i]=srcPath.getPath()+File.separator+files[i].getName();
                System.out.println("filenames"+filenames[i]);
             
           }
         
         
         ZipOutputStream out = new ZipOutputStream(new FileOutputStream(outFilename));
            
                  
           for (int i=0; i<filenames.length; i++) 
           {
            
             FileInputStream in = new FileInputStream(filenames[i]);
             out.putNextEntry(new org.apache.tools.zip.ZipEntry(files[i].getName()));
             int len;
             while ((len = in.read(buf)) > 0) 
                   {
                   out.write(buf, 0, len);
                   }

             out.closeEntry();
             in.close();
           }
         
         out.close();
       
      } 
       catch (IOException e) 
          {
             System.out.println(e); 
           }
     }
 
 }

=========================================

主程序:

import lotus.domino.*;
import java.io.*;
import java.util.Vector;
import java.util.Properties;
import java.util.Enumeration;
import java.lang.*;
import java.text.*;
import java.util.*;

public class JavaAgent extends AgentBase {
   
 public void NotesMain() {
  ReturnMessage returnMessage = new ReturnMessage();
          PrintWriter mainPw = getAgentOutput();
          String  reMsg  = "";
         
  
  try {
   
   Session session = getSession();
   AgentContext agentContext = session.getAgentContext();
   Database db = agentContext.getCurrentDatabase();
               // Document pdoc = db.getProfileDocument("FM_DBSetting","");
               //String curfilepath= pdoc.getItemValueString("F_Filepath");
               
               String  CurFilePath = db.getFilePath().replace(’\\’,’/’);
               String directory = null;
   directory = returnMessage.getDirectory(session);
   int post = directory.indexOf(":\\");
   String curpath=null;
   String path=null;
   if(post!=-1){  //Win
    path = directory+"\\domino\\html\\DownloadsFolder\\";
   }
   else{
          
    curpath = directory.replace(’\\’, ’/’);
    path = "/"+curpath.substring(1,curpath.length())+"/domino/html/DownloadsFolder/";
    
    }
    
               
   View view = db.getView("VH_ByAllDoc");
   Document CurDoc = agentContext.getDocumentContext();
          String CurUserName = CurDoc.getItemValueString("F_CurUserName");
          String CurFileName = path+"\\"+CurUserName+"\\";
          String DownFileName = CurUserName+".zip";
          String CurSelceted = CurDoc.getItemValueString("F_TmpSelected");
          StringTokenizer st = new StringTokenizer(CurSelceted,"+");      //以+为分隔取字符串
      while (st.hasMoreTokens())                                      //控制循环
       {
           String key=st.nextToken();                             //获得+号第一个字符串
               Document doc = view.getDocumentByKey(key,true); 
                       if (doc!= null){
                           //SaveFile 创建文件夹,导出附件
                           
                           String CurSubject = doc.getItemValueString("Subject");
                           RandomStringUtils randn = new RandomStringUtils();
                           String srcFile = CurSubject + randn.randomNumeric(8);
                           String filepath =path+"\\"+CurUserName+"\\";
                           File aFile=new File(filepath);
                           if (!aFile.exists())
                              {
                                aFile.mkdirs();
                              } 
                             
                              else{
                                  new File(filepath).delete(); 
                             }
                                  
                             
                               //提取附件名称,去除在线编辑WORD正文文件。
                         Vector v = session.evaluate("@AttachmentNames", doc);
                         int attno=v.size();
                         for (int i=0; i<v.size(); i++){
                          EmbeddedObject obj = doc.getAttachment((String)v.elementAt(i));
                              String curobj=(String)v.elementAt(i);
                              if (curobj.indexOf("LKSATT")<0)
                                 {
                                   obj.extractFile(filepath + (String)v.elementAt(i));
                          }
                          }
                       
             }
                                      
               } 
               CDGGzip cdggzip=new CDGGzip();
               cdggzip.setSrcPath(CurFileName);  
               cdggzip.gzip();
               cdggzip.deletefile(CurFileName);  
               
              // reMsg ="文件测试"; 
           reMsg ="请直接在下面的链接上按鼠标右键选择【目标另存为】[<br><a target=\"_blank\" 
href=\"/DownloadsFolder/"+ DownFileName +"\">文件导出地址。</a>]";
               returnMessage.returnMsg(reMsg, "B", mainPw, CurFilePath); 
              
  } catch(Exception e) {
   e.printStackTrace();
  }
 }
}


『相关搜索』
版本信息:kms v1.3 鄂ICP备2023004815号-1 51LA统计