使用LR编写下载类脚本

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

#include "lrs.h"
Action()
{
// 示例一:

//第一种创建随机数的方法,此种方案是我们采用的
    int flen;             //定义一个整型变量保存获得文件的大小
    long filedes;         //保存文件句柄
    char file[256]="\0";  //保存文件路径及文件名
    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]="\0"; //保存文件路径及文件名 
    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:\test路径赋值给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;
  }

 

转载于:https://www.cnblogs.com/ssj0723/p/9581610.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值