Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 创建一个zip文件。然后下载_Java_Smartclient - Fatal编程技术网

Java 创建一个zip文件。然后下载

Java 创建一个zip文件。然后下载,java,smartclient,Java,Smartclient,我创建了一个按钮,可以创建一个zip文件。该功能可以正确地对文件进行压缩,但是当我通过按钮(在JS文件中)调用她时,它崩溃了,并给出了一个空白页面(我想我不管理输出流),这将是一个好主意 (这是一个新的修改版本(适用于那些认为这是同一个问题的人) 代码如下: 钮扣 isc.ToolStripButton.create({ ID: "BooksApp_GetXmlImage_Button" ,autoDraw:false ,icon: getUIIcon("icon_xm

我创建了一个按钮,可以创建一个zip文件。该功能可以正确地对文件进行压缩,但是当我通过按钮(在JS文件中)调用她时,它崩溃了,并给出了一个空白页面(我想我不管理输出流),这将是一个好主意

(这是一个新的修改版本(适用于那些认为这是同一个问题的人)

代码如下:

钮扣

 isc.ToolStripButton.create({
    ID: "BooksApp_GetXmlImage_Button"
    ,autoDraw:false
    ,icon: getUIIcon("icon_xml_16")
    ,prompt: getUIMsg("book_report_get_xml",4)
    ,showHover:true
    ,hoverStyle:"book_hover_style"
    ,click : function () {
        BooksApp_Action_loadFile("objx");
        // isc.say("test");
        }
});
函数调用zipfile()方法:

customExport()函数

公共静态字符串customExport(RPCManager rpc,
HttpServletResponse)引发异常{
字符串sReturn=\u Return\u OK;
试一试{
//设置doCustomResponse()会通知RPCManager我们将
//绕过RPCManager.send
//而是直接写入servletResponse输出流
rpc.doCustomResponse();
setNoCacheHeaders(响应);
writeServerDebug(“自定义导出:启动”);
DSRequest req=rpc.getDSRequest();
列表结果=req.execute().getDataList();
String sReqData=(String)req.getParameter(“exportDisplay”);
字符串sReqData_sBook_ID=”“+req.getCriteriaValue(“sBook_ID”);
字符串sReqData_sPOV_id=“”+请求获取标准值(“sPOV_id”);
字符串sReqData_sUser_ID=”“+req.getCriteriaValue(“sUser_ID”);
字符串sReqData_sFormat=“+req.getCriteriaValue(“sFormat”);
StringBuilder内容=新建StringBuilder(“获取(sReqData:
+sReqData+”,笔记本ID:“+sReqData\U笔记本ID”
+,sPOV_ID:“+sReqData_sPOV_ID+”,用户ID:
+sReqData_sUser_ID+”,格式:“+sReqData_sFormat+”)
+结果。大小()+“行:”;
for(迭代器i=results.Iterator();i.hasNext();){
映射记录=(映射)i.next();
content.append(“\n”+Books.Column\u IDNum+”:“
+record.get(Books.Column_IDNum));
content.append(“\n”+Books.Column\u Name+”:“
+record.get(Books.Column_Name));
}
writeServerDebug(“内容是\n”+content.toString());
//创建新的Office引擎
OfficeEngine myOfficeEngine=新的OfficeEngine();
布尔值bisconned=myOfficeEngine.get\u RepositoryBridge()
.connectSourceDataBase(错误);
如果(双连通){
//连接到存储库,因此获取文件
if(sReqData格式等效信号案例(“pdf”)| | sReqData格式等效信号案例(“pptx”)){
//图书最终用户格式
字符串sReturnPptx=myOfficeEngine.performGeneratePptx(
req.getHttpServletRequest(),响应,
sReqData_sBook_ID,sReqData_sPOV_ID,
sReqData(用户ID,sReqData格式);
writeServerDebug(“customExport调用PerformGeneratepTx,返回“+SReturnpTx”);
}
else if(sReqData格式等效信号案例(“objx”)){
//字符串sReturnObjx=myOfficeEngine.performExport(req.getHttpServletRequest(),响应,sReqData\u sBook\u ID,sReqData\u sUser\u ID,sReqData\u sFormat
//       );
字符串sReturnPptx=myOfficeEngine.performExport(req.getHttpServletRequest(),响应,sReqData\u sBook\u ID,sReqData\u sUser\u ID,sReqData\u sFormat
);
writeServerDebug(“customExport调用PerformGeneratepTx,返回“+SReturnpTx”);
}
//释放到存储库的连接
myOfficeEngine.get_RepositoryBridge().freeConnectionSource();
}否则{
response.setContentType(“文本/普通”);
response.addHeader(“内容处置”,
“附件;文件名=book.txt”);
ServletOutputStream os=response.getOutputStream();
打印(content.toString());
os.flush();
}
}捕获(例外e){
writeServerDebug(“错误:+e.getLocalizedMessage());
sReturn=Repository.\u Return\u KO;
}
回报率;
}
PerformExport方法:

   public String  performExport(javax.servlet.http.HttpServletRequest request,javax.servlet.http.HttpServletResponse response, 
            String p_sBook_ID,  String p_sUser_ID, String p_sFormat) {

    //public String performExport(String p_sBook_ID,  String p_sUser_ID, String p_sFormat) {

            String sReturn = _Return_OK;

                  writeServerDebug("performExport(req,resp,'" + p_sBook_ID + "'," + p_sUser_ID + "," + p_sFormat + "):start");

                  // ====================================================
                  // = Get the template directory
                  // ====================================================
                  FilerManager myFiler = new FilerManager();
                  String sInputPath = myFiler.getDirectory(
                  FilerManager.DirectoryKind_Users, true);
                  // Here add TMP directories to write XML's structure and ZIP
                  // sInputPath+="TMP";

                  // ====================================================
                  // = Working variables JDBC objects.
                  // ====================================================
                  Connection con = null;
                   Statement stmt = null;
                   ResultSet rs = null;
                   String SQL = "";
                  // String sLogMsg = "loadSourceDataBaseParams():";
                  // PreparedStatement prepStmtTarget = null;

                  try {
                        writeServerDebug("performExport >> START");
                        // ---------------------------------------------------------
                        // - Establish the connection.
                        // ---------------------------------------------------------
                        con = get_RepositoryBridge().getSourceDataBaseConnection();
                  } catch (Exception ex) {
                        sReturn = Repository._Return_KO;
                  }

                  HashMap<String, Object> _hCacheBook = new HashMap<String, Object>();
                  try {
                        int iSrcCount = get_RepositoryBridge().cacheQueryData(
                                   "SELECT TOP(1) * FROM " + Books.Table + " WHERE "
                                               + Books.Column_IDNum + "=" + p_sBook_ID,
                                   _hCacheBook, "DataBase_Source");
                        int iColCount = (Integer) (_hCacheBook.get("SQL_ColumnCount"));
                        String sColDesc = (String) (_hCacheBook.get("SQL_ColumnDesc"));
                        String sColValues = (String) (_hCacheBook
                                   .get("SQL_ColumnValues"));

                        writeServerDebug("performExport:iColCount=" + iColCount);
                        writeServerDebug("performExport:sColDesc=" + sColDesc);
                        writeServerDebug("performExport:sColValues=" + sColValues);


                        for (int iLineCounter = 1; iLineCounter <= iSrcCount; iLineCounter++) {
                              for (int iColCounter = 1; iColCounter <= iColCount; iColCounter++) {
                                   String sTmpColClass = (String) (_hCacheBook
                                               .get("SQL_ColumnDescClass(" + iColCounter + ")"));// return

                                   if (sTmpColClass.equals("java.lang.String")) {

                                          System.out.println(_hCacheBook.get(iLineCounter+"_"+iColCounter));
                                   }

                                   else if (sTmpColClass.equals("java.lang.Integer")) {

                                          System.out.println(_hCacheBook.get(iLineCounter+"_"+iColCounter));

                                   } else if (sTmpColClass.equals("java.lang.Double")) {

                                          System.out.println(_hCacheBook.get(iLineCounter+"_"+iColCounter));
                                   }  

                              }

                        }
                        int nbrCol = (Integer) (_hCacheBook.get("SQL_ColumnCount"));
                        System.out.println("test nbr col : "+ nbrCol);
                        ZipOutputStream objx = this.CreatXml(nbrCol, 1, _hCacheBook);
                        response.setHeader("Content-disposition",
                                "attachment;filename=\testJS.zip\"");  

                        String sContentType = "application/vnd.ms-objx";  
                        response.setContentType(sContentType);

                        ServletOutputStream outStream = response.getOutputStream();
                        outStream.close();
                  }

                  catch (Exception ex) {
                        System.out.println("I AM IN THE EXCEPTION :");
                        ex.printStackTrace();
                  }


            return sReturn;
      }
public String performExport(javax.servlet.http.HttpServletRequest请求,javax.servlet.http.HttpServletResponse响应,
字符串p_sBook_ID、字符串p_sUser_ID、字符串p_sFormat){
//公共字符串performExport(字符串p_sBook_ID、字符串p_sUser_ID、字符串p_sFormat){
字符串sReturn=\u Return\u OK;
writeServerDebug(“performExport(请求,响应,”+p_sBook_ID+”、“+p_sUser_ID+”、“+p_sFormat+”):启动”);
// ====================================================
//=获取模板目录
// ====================================================
FilerManager myFiler=新FilerManager();
字符串sInputPath=myFiler.getDirectory(
     public static String customExport(RPCManager rpc,
                      HttpServletResponse response) throws Exception {
                String sReturn = _Return_OK;
                try {
                      // setting doCustomResponse() notifies the RPCManager that we'll
                      // bypass RPCManager.send
                      // and instead write directly to the servletResponse output stream
                      rpc.doCustomResponse();
                      RequestContext.setNoCacheHeaders(response);

                      writeServerDebug("customExport : start");
                      DSRequest req = rpc.getDSRequest();

                      List<?> results = req.execute().getDataList();

                      String sReqData = (String) req.getParameter("exportDisplay");
                      String sReqData_sBook_ID = "" + req.getCriteriaValue("sBook_ID");
                      String sReqData_sPOV_IDs = "" + req.getCriteriaValue("sPOV_IDs");
                      String sReqData_sUser_ID = "" + req.getCriteriaValue("sUser_ID");
                      String sReqData_sFormat  = "" + req.getCriteriaValue("sFormat");

                      StringBuilder content = new StringBuilder("get (sReqData:"
                                  + sReqData + ",sBook_ID:" + sReqData_sBook_ID
                                  + ",sPOV_IDs:" + sReqData_sPOV_IDs + ",sUser_ID:"
                                  + sReqData_sUser_ID + ",sFormat:" + sReqData_sFormat + ")"
                                  + results.size() + " line(s):");

                      for (Iterator<?> i = results.iterator(); i.hasNext();) {
                            Map<?, ?> record = (Map<?, ?>) i.next();
                            content.append("\n" + Books.Column_IDNum + ":"
                                       + record.get(Books.Column_IDNum));
                            content.append("\n" + Books.Column_Name + ":"
                                       + record.get(Books.Column_Name));
                      }

                      writeServerDebug("The content is \n" + content.toString());

                      // Create the new Office Engine
                      OfficeEngine myOfficeEngine = new OfficeEngine();

                      boolean bIsConnected = myOfficeEngine.get_RepositoryBridge()
                                  .connectSourceDataBase(false);
                      if (bIsConnected) {
                            //Connected to the repository, so get the files
                            if (sReqData_sFormat.equalsIgnoreCase("pdf") || sReqData_sFormat.equalsIgnoreCase("pptx")) {
                                  //The book end user format 
                                  String sReturnPptx = myOfficeEngine.performGeneratePptx(
                                             req.getHttpServletRequest(), response,
                                             sReqData_sBook_ID, sReqData_sPOV_IDs,
                                             sReqData_sUser_ID, sReqData_sFormat);
                                  writeServerDebug("customExport call performGeneratePptx, return is "+ sReturnPptx);

                            }
                            else if (sReqData_sFormat.equalsIgnoreCase("objx")) {
                                 //String sReturnObjx = myOfficeEngine.performExport(req.getHttpServletRequest(), response,sReqData_sBook_ID,sReqData_sUser_ID,sReqData_sFormat
                                   //       );
                                String sReturnPptx = myOfficeEngine.performExport(req.getHttpServletRequest(), response,sReqData_sBook_ID,sReqData_sUser_ID,sReqData_sFormat
                                         );

                                writeServerDebug("customExport call performGeneratePptx, return is " + sReturnPptx);

                            }
                            //Free the connection to repository
                            myOfficeEngine.get_RepositoryBridge().freeConnectionSource();
                      } else {
                            response.setContentType("text/plain");
                            response.addHeader("content-disposition",
                                       "attachment; filename=book.txt");
                            ServletOutputStream os = response.getOutputStream();
                            os.print(content.toString());
                            os.flush();
                      }
                } catch (Exception e) {
                      writeServerDebug("ERROR:" + e.getLocalizedMessage());
                      sReturn = Repository._Return_KO;
                }
                return sReturn;
          }
   public String  performExport(javax.servlet.http.HttpServletRequest request,javax.servlet.http.HttpServletResponse response, 
            String p_sBook_ID,  String p_sUser_ID, String p_sFormat) {

    //public String performExport(String p_sBook_ID,  String p_sUser_ID, String p_sFormat) {

            String sReturn = _Return_OK;

                  writeServerDebug("performExport(req,resp,'" + p_sBook_ID + "'," + p_sUser_ID + "," + p_sFormat + "):start");

                  // ====================================================
                  // = Get the template directory
                  // ====================================================
                  FilerManager myFiler = new FilerManager();
                  String sInputPath = myFiler.getDirectory(
                  FilerManager.DirectoryKind_Users, true);
                  // Here add TMP directories to write XML's structure and ZIP
                  // sInputPath+="TMP";

                  // ====================================================
                  // = Working variables JDBC objects.
                  // ====================================================
                  Connection con = null;
                   Statement stmt = null;
                   ResultSet rs = null;
                   String SQL = "";
                  // String sLogMsg = "loadSourceDataBaseParams():";
                  // PreparedStatement prepStmtTarget = null;

                  try {
                        writeServerDebug("performExport >> START");
                        // ---------------------------------------------------------
                        // - Establish the connection.
                        // ---------------------------------------------------------
                        con = get_RepositoryBridge().getSourceDataBaseConnection();
                  } catch (Exception ex) {
                        sReturn = Repository._Return_KO;
                  }

                  HashMap<String, Object> _hCacheBook = new HashMap<String, Object>();
                  try {
                        int iSrcCount = get_RepositoryBridge().cacheQueryData(
                                   "SELECT TOP(1) * FROM " + Books.Table + " WHERE "
                                               + Books.Column_IDNum + "=" + p_sBook_ID,
                                   _hCacheBook, "DataBase_Source");
                        int iColCount = (Integer) (_hCacheBook.get("SQL_ColumnCount"));
                        String sColDesc = (String) (_hCacheBook.get("SQL_ColumnDesc"));
                        String sColValues = (String) (_hCacheBook
                                   .get("SQL_ColumnValues"));

                        writeServerDebug("performExport:iColCount=" + iColCount);
                        writeServerDebug("performExport:sColDesc=" + sColDesc);
                        writeServerDebug("performExport:sColValues=" + sColValues);


                        for (int iLineCounter = 1; iLineCounter <= iSrcCount; iLineCounter++) {
                              for (int iColCounter = 1; iColCounter <= iColCount; iColCounter++) {
                                   String sTmpColClass = (String) (_hCacheBook
                                               .get("SQL_ColumnDescClass(" + iColCounter + ")"));// return

                                   if (sTmpColClass.equals("java.lang.String")) {

                                          System.out.println(_hCacheBook.get(iLineCounter+"_"+iColCounter));
                                   }

                                   else if (sTmpColClass.equals("java.lang.Integer")) {

                                          System.out.println(_hCacheBook.get(iLineCounter+"_"+iColCounter));

                                   } else if (sTmpColClass.equals("java.lang.Double")) {

                                          System.out.println(_hCacheBook.get(iLineCounter+"_"+iColCounter));
                                   }  

                              }

                        }
                        int nbrCol = (Integer) (_hCacheBook.get("SQL_ColumnCount"));
                        System.out.println("test nbr col : "+ nbrCol);
                        ZipOutputStream objx = this.CreatXml(nbrCol, 1, _hCacheBook);
                        response.setHeader("Content-disposition",
                                "attachment;filename=\testJS.zip\"");  

                        String sContentType = "application/vnd.ms-objx";  
                        response.setContentType(sContentType);

                        ServletOutputStream outStream = response.getOutputStream();
                        outStream.close();
                  }

                  catch (Exception ex) {
                        System.out.println("I AM IN THE EXCEPTION :");
                        ex.printStackTrace();
                  }


            return sReturn;
      }
public String  performExport(javax.servlet.http.HttpServletRequest request,javax.servlet.http.HttpServletResponse response, 
        String p_sBook_ID,  String p_sUser_ID, String p_sFormat) {

        String sReturn = _Return_OK;
            try {

                 writeServerDebug("performExport(req,resp,'" + p_sBook_ID + "'," + p_sUser_ID + "," + p_sFormat + "):start");

                  // ====================================================
                  // = Get the template directory
                  // ====================================================
                  FilerManager myFiler = new FilerManager();
                  String sInputPath = myFiler.getDirectory(
                  FilerManager.DirectoryKind_Users, true);

                  // ====================================================
                  // = Working variables JDBC objects.
                  // ====================================================
                   Connection con = null;
                   Statement stmt = null;
                   ResultSet rs = null;
                   String SQL = "";

                  try {
                        writeServerDebug("performExport >> START");
                        // ---------------------------------------------------------
                        // - Establish the connection.
                        // ---------------------------------------------------------
                        con = _RepositoryBridge.getSourceDataBaseConnection();
                  } catch (Exception ex) {
                        sReturn = Repository._Return_KO;
                  }

                  HashMap<String, Object> _hCacheBook = new HashMap<String, Object>();
                  try {
                        int iSrcCount = get_RepositoryBridge().cacheQueryData("SELECT TOP(1) * FROM " + Books.Table + " WHERE " + Books.Column_IDNum + "=" + p_sBook_ID,  _hCacheBook, "DataBase_Source");
                        int iColCount = (Integer) (_hCacheBook.get("SQL_ColumnCount"));
                        String sColDesc = (String) (_hCacheBook.get("SQL_ColumnDesc"));
                        String sColValues = (String) (_hCacheBook
                                   .get("SQL_ColumnValues"));

                        int nbrCol = (Integer) (_hCacheBook.get("SQL_ColumnCount"));
                        String sContentType = "application/vnd.ms-objx";
                        response.setContentType(sContentType);

                        ServletOutputStream outStream = new ServletOutputStream() {
                            @Override
                            public void write(int arg0) throws IOException {
                                // TODO Auto-generated method stub
                            }
                        };

                        outStream = response.getOutputStream();
                        this.CreatXml(nbrCol, 1, _hCacheBook, outStream, response );      
                        outStream.flush();
                        outStream.close();
                  }

                  catch (Exception ex) {
                        System.out.println("I AM IN THE EXCEPTION :");
                        ex.printStackTrace();
                  }

    }
            catch (Exception e) {
                writeServerDebug("ERROR:" + e.getLocalizedMessage());
                sReturn = Repository._Return_KO;
          }
            return sReturn;
      }
public ZipOutputStream CreatXml(int nbr_col, int iLineCounter,
              HashMap<String, Object> H, ServletOutputStream out , javax.servlet.http.HttpServletResponse response ) throws IOException {

            ZipOutputStream zipfile = null;
            String BookName = null;
            String BookID = null;
            int axisID = 11 ;
            String TemplateChild = null;
            DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
            DocumentBuilder docBuilder = null;
            try {
                    writeServerDebug("call function Create XML");
                    docBuilder = docFactory.newDocumentBuilder();
            } catch (ParserConfigurationException e2) {

                  e2.printStackTrace();
            }
            // Element : book_objects
            String tableName = "book_objects";
            org.w3c.dom.Document doc = docBuilder.newDocument();
            Element p_tableName = doc.createElement(tableName);
            doc.appendChild(p_tableName);

            // Element : object
            Element p_object = doc.createElement("object");
            String []platformeversion = JavaFunctions.convertStringToArray(Repository.Portal_Version, "=");
            p_object.setAttribute("version", platformeversion[1]+"  "+getVersion());
            p_tableName.appendChild(p_object);

            String tabCol = (String) (H.get("SQL_ColumnDesc"));
            String[] colName = JavaFunctions.convertStringToArray(tabCol, ", ");
            String [][]dep = null;
            dep = Dependances.sReturnDependance();
            String [][]colVal = new String [9][2];
            int c=0;
            for (int i = 1; i <= nbr_col; i++) {

                  String columnName = colName[i - 1];
                  columnName = columnName.replaceAll(" ", "");
                  columnName = columnName.replace("(", "");
                  columnName = columnName.replace(")", "");

                  Element nomChamps = doc.createElement(columnName);

                  String value = "";
                  value = "" + H.get(iLineCounter + "_" + i);
                  if(columnName.equalsIgnoreCase(Books.Column_Name)){
                      BookName = value;
                  }
                  if(columnName.equalsIgnoreCase(Books.Column_IDNum)){
                      BookID = value;
                  }
                  if(columnName.equalsIgnoreCase(Books.Column_axis_main_idnum)){
                      axisID = (Integer) H.get(iLineCounter + "_" + i);

                  }
                  if(columnName.equalsIgnoreCase(Books.Column_Template_Child)){
                      TemplateChild = (String) H.get(iLineCounter + "_" + i);

                  }

                  //retrieve the columns and their values for the dependencies
                  for(int cpt=0; cpt<5; cpt++){
                        if(dep[cpt][0].equalsIgnoreCase(columnName)){
                          colVal[c][0]=columnName;
                          colVal[c][1]= value;
                          c++;
                        }
                  }
                    nomChamps.appendChild(doc.createTextNode((String) value));
                    p_object.appendChild(nomChamps);

            }

            String label[] = JavaFunctions.convertStringToArray(TemplateChild, "/");
            String path = "C:\\Fovea_Repository/output/";
            File outputdirectory = new File (path);

            // Create the output file
            String fileName ="ExportDirectory"+ BookName +".zip";
            response.setHeader( "Content-Disposition", "filename=" + fileName );          
            Transformer tf = null;
            try {

                  tf = TransformerFactory.newInstance().newTransformer();
            } catch (TransformerConfigurationException e1) {

                  e1.printStackTrace();
            } 
            try {
                  // Format XML
                  tf.setOutputProperty(OutputKeys.INDENT, "yes");
                  tf.setOutputProperty(OutputKeys.METHOD, "xml");
                  tf.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
                  tf.setOutputProperty("{http://xml.apache.org/xslt}indent-amount","4");
                  File directory = new File ("C:/Fovea_Repository/ExportDirectory/");
                  if(!directory.exists()){
                      directory.delete();
                      directory.mkdir();
                    }
                  DOMSource source = new DOMSource(doc);
                  StreamResult res = new StreamResult(new File("C:/Fovea_Repository/ExportDirectory/dependance.xml"));
                  tf.transform(source, res);



                  //create a zip file (Export_directory)
                  AppZip appZip = new AppZip();
                  String sourcefolder = "C:/Fovea_Repository/ExportDirectory"; 
                  String outputfoler  = " ";

                  ZipOutputStream returnFile = appZip.ZipFile(outputfoler , sourcefolder , out, BookName , BookID);
                  zipfile = returnFile;


            } catch (TransformerException e) {
                  e.printStackTrace();
            }

           return zipfile;
      }