• 使用LR编写下载类脚本


    如何下载并保存文件到本地,实现文件下载的脚本制作。以下是本人测试某系统总结整理的脚本,仅供参考。

    #include "lrs.h"
    Action()
    {
    // 示例一:
    
    //第一种创建随机数的方法,此种方案是我们采用的
        int flen;             //定义一个整型变量保存获得文件的大小
        long filedes;         //保存文件句柄
        char file[256]="";  //保存文件路径及文件名
        char * strNumber;     //定义一个随机数
        strNumber=lr_eval_string("{RandomNum}"); 获取1~100个随机数
        strcat(file,"D:\DownLoad\"); //将路径保存到file变量中
        strcat(file,strNumber);        //将获得的随机数拼接在file变量之后 
        strcat(file,".zip");           //将下载的文件后缀名.rar拼接在file变量之后
     
    //第二种创建随机数的方法
        int flen;  //文件大小
        long filedes;  //响应数据内容大小
        char file[256]=""; //保存文件路径及文件名 
        int rNum;         //定义一个随机数                                       
        char S[8];       //数字由int转为char
        srand(time(NULL)); //初始化
        rNum= rand() % 100; //获得0~100的随机数
        sprintf(S,"%d",rNum);//int 转换为 char
        strcat(file,"D:\DownLoad\");//将d:	est路径赋值给file
        strcat(file,S);//在file后面加上随机数
        strcat(file,".zip");  //输出的文件格式
           
    
         web_set_max_html_param_len("20000");//设置参数的最大长度,注意该值必须大于文件的大小
         web_reg_save_param("Download","LB=","RB=","SEARCH=BODY", LAST);
         lr_start_transaction("下载"); 
    
         web_url("DownLoadBW","URL=http://IP:port/bsreport/download.action?fileName=/report/workdir/reportfile/20141231.txt.zip",
          "Resource=1", 
          LAST ); 
    
         flen = web_get_int_property(HTTP_INFO_DOWNLOAD_SIZE);//获取响应中的文件长度
    
      if(flen > 0)   //实际 4KB 的压缩文件 
         {
         lr_end_transaction("下载",LR_PASS);
        if((filedes = fopen(file, "wb")) == NULL)  //以写方式打开文件
        {
         lr_output_message("Open File Failed!");
         return -1;
        }
        fwrite(lr_eval_string("{Download}"), flen, 1, filedes); //写入文件内容
        fclose(filedes);  //关闭文件  
         }else{
         lr_end_transaction("下载",LR_FAIL); 
       
         }
    
      /**
       此种方法是把下载的文件下载到D:\DownLoad目录下并命名为 C003_15087_01.txt.zip
       测试结果证明:在并发压力下,多个进程对同一个文件做保存、打开和替换,就会出现排队等待现象,
       大量占用执行机的内存资源。可能导致内存溢出。
      **/
     
    
    //示例二:
    
        int flen;  //定义一个整型变量保存获得文件的大小
        long filedes;  //保存文件句柄
        char * file = "D:\DownLoad\C003_15087_01.txt.zip"; //保存文件路径及文件名
        web_set_max_html_param_len("60000");//设置参数的最大长度,注意该值必须大于文件的大小
        web_reg_save_param("Download","LB=","RB=","SEARCH=BODY", LAST);
        lr_start_transaction("产品下载"); 
        web_url("DownLoadBW",  
                "URL=http://IP:port/bsreport/download.action?fileName=/report/workdir/reportfile/20141231.txt.zip",
       "Resource=1", 
        LAST ); 
           
         flen = web_get_int_property(HTTP_INFO_DOWNLOAD_SIZE);//获取响应中的文件长度
    
         /***下面的方式是如果获取到的文件大小大于0,则判断交易成功,然后再去写文件,否则直接判断交易失败。
         
        if(flen > 0)   //实际 4KB 的压缩文件 
         {
         lr_end_transaction("下载",LR_PASS);
        if((filedes = fopen(file, "wb")) == NULL)  //以写方式打开文件
        {
         lr_output_message("Open File Failed!");
         return -1;
        }
        fwrite(lr_eval_string("{Download}"), flen, 1, filedes); //写入文件内容
        fclose(filedes);  //关闭文件
         }else{
         lr_end_transaction("下载",LR_FAIL); 
         }
        ***/ 
       /***下面的方式是如果写文件成功就判断交易成功,否则交易失败
       if(flen > 0)   
          {
            if((filedes = fopen(file, "wb")) == NULL)
            {
                lr_output_message("Open File Failed!");
             lr_end_transaction("下载",LR_FAIL);
                return -1;
            }
            fwrite(lr_eval_string("{Download}"), flen, 1, filedes);//写入文件内容
            fclose(filedes);  //关闭文件
        lr_end_transaction("下载",LR_PASS);
        }
        ***/
    
    
    /** 
       此种方法是只从服务器上获取下载的文件资源路径即可,不把资源下载到本地。
       测试结果证明:在并发压力下,大量占用执行机的内存资源。压力达到一定程度会导致内存溢出。
    **/
    
     
    
    //示例三:
    
         long flen;
         web_set_max_html_param_len("50000");//设置参数的最大长度,注意该值必须大于文件的大小
         web_reg_save_param("Download","LB=","RB=","SEARCH=BODY", LAST);
         lr_start_transaction("下载"); 
        web_url("DownLoadBW", 
                 "URL=http://IP:port/bsreport/download.action?fileName=/report/workdir/reportfile/20141231.txt.zip",
                 "Resource=1", 
                   LAST ); 
           flen = web_get_int_property(HTTP_INFO_DOWNLOAD_SIZE);//获取响应中的文件长度
        if(flen > 0)   //实际 4KB 的压缩文件 
         {
         lr_end_transaction("下载",LR_PASS);  
         }else{
         lr_end_transaction("下载",LR_FAIL); 
         }
    
    return 0;
      }
  • 相关阅读:
    WordPress Uploader插件‘blog’参数跨站脚本漏洞
    WordPress Counter Per Day插件拒绝服务漏洞
    OpenSSH 远程拒绝服务漏洞
    WordPress Count Per Day插件 ‘daytoshow’参数跨站脚本漏洞
    昨日关注-每日编译(DailyBuild) 参考
    产品这么卖很好玩
    知己知彼
    让一切有调理
    昨日关注SqlServer中区分大小写
    软件公司到底有几种
  • 原文地址:https://www.cnblogs.com/ssj0723/p/9581610.html
Copyright © 2020-2023  润新知