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

#include "lrs.h"
Action()
{
// 示例一: //第一种创建随机数的方法,此种方案是我们采用的
int flen; //定义一个整型变量保存获得文件的大小
long filedes; //保存文件句柄
char file[]="\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[]="\0"; //保存文件路径及文件名
int rNum; //定义一个随机数
char S[]; //数字由int转为char
srand(time(NULL)); //初始化
rNum= rand() % ; //获得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("");//设置参数的最大长度,注意该值必须大于文件的大小
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 > ) //实际 4KB 的压缩文件
{
lr_end_transaction("下载",LR_PASS);
if((filedes = fopen(file, "wb")) == NULL) //以写方式打开文件
{
lr_output_message("Open File Failed!");
return -;
}
fwrite(lr_eval_string("{Download}"), flen, , 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("");//设置参数的最大长度,注意该值必须大于文件的大小
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("");//设置参数的最大长度,注意该值必须大于文件的大小
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 > ) //实际 4KB 的压缩文件
{
lr_end_transaction("下载",LR_PASS);
}else{
lr_end_transaction("下载",LR_FAIL);
} return ;
}

使用LR编写下载类脚本的更多相关文章

  1. 【LoadRunner】LR编写Dubbo协议脚本

    一.Dubbo服务简介 Dubbo是一个分布式服务架构,把核心业务抽取出来作为独立的服务,使前端应用能更快速和稳定的响应. Dubbo服务工作原理:服务提供方提供接口,并提供接口的实现,提供方注册服务 ...

  2. 使用LR编写HTTP协议Json报文格式接口脚本实战

    最近在做HTTP协议接口压测时,遇到一些编写脚本方面的问题,在这里总结记录下,以便以后温习,也希望能帮助到和我有同样困惑的朋友吧. //实战代码如下所示:Action() { lr_start_tra ...

  3. LR编写Socket脚本方法2(从文件读取报文)

      之前,给大家分享了LoadRunner编写socket协议脚本的基本方法与规则,今天给大家分享下,如何从本地文件,读取内容,并作为报文,发送到服务端:该方法也是在工作中遇到的一个难点,想通过这种方 ...

  4. LoadRunner下载文件脚本

    LoadRunner下载文件脚本  在看普泽关于pezybase的测试报告的时候,发现里面有用到jmeter(http协议)并发测试下载文件,考虑到后面可能需要在公司pezybase的并发下载,把之前 ...

  5. 病毒木马查杀实战第025篇:JS下载者脚本木马的分析与防御

    前言 这次我与大家分享的是我所总结的关于JS下载者脚本木马的分析与防御技术.之所以要选择这样的一个题目,是因为在日常的病毒分析工作中,每天都会遇到这类病毒样本,少则几个,多则几十个(当然了,更多的样本 ...

  6. linux软件管理之------编译安装nginx服务器并手动编写自动化运行脚本

    红帽系列的 linux软件管理分为三类:1. rpm 安装软件.2. yum 安装软件.3. 源码包编译安装.前面两种会在相关专题给出详细讲解.源码包的编译安装是非常关键的,我们知道linux的相关版 ...

  7. 品味性能之道<九>:利用Loadrunner编写socket性能测试脚本简述

            一.概述         Loadrunner拥有极为丰富的工具箱,供予我们制造出各种奇妙魔法的能力.其中就有此次要讨论的socket套接字操作.     二.socket概述     ...

  8. 编写无Java脚本的JSP页面

    在上一章中总结了Web开发中应用MVC架构模式,将Servlet 用做控制器,JSP作为视图,JavaBean作为模型,实现业务流程控制,页面逻辑和业务逻辑的分离.然而,使用前面的技术实现MVC,并不 ...

  9. [转贴]systemd 编写服务管理脚本

    [转贴]sparkdev大神的博客, 关于 systemd的配置文件的 介绍, 自己之前二进制安装 k8s 时 超过一个 service文件 但是当时不明不白的. 现在再学习一下大神的文章 的确牛B ...

随机推荐

  1. CDI Features

    概述 如果说EJB,JPA是之前JEE(JEE5及JEE5之前)中里程碑式的规范,那么在JEE6,JEE7中CDI可以与之媲美,CDI(Contexts and Dependency Injectio ...

  2. node.js Setup Wizard ended prematurely 安装失败

    解决: 1. 按照管理员权限运行. 2.安装时禁用掉node 运行环境中的performance counters 和 ETW,或者可以尝试先禁用performance counters .

  3. 串口RS232和485通信的波形分析

    一.串行数据的格式 异步串行数据的一般格式是:起始位+数据位+停止位,其中起始位1 位,数据位可以是5.6.7.8位,停止位可以是1.1.5.2位. 起始位是一个值为0的位,所以对于正逻辑的TTL电平 ...

  4. JDK、JRE

    JRE: java Runtime environment (java运行环境) JVM:java virtual machine (java 虚拟机) java程序就在jvm中运行. JDK: ja ...

  5. FCC(ES6写法) Make a Person

    用下面给定的方法构造一个对象. 方法有 getFirstName(), getLastName(), getFullName(), setFirstName(first), setLastName(l ...

  6. 批处理修改IP

    1. 单次修改IP,批处理文件 newIP.bat @echo =========== Changing to IP : 222.192.41.%1 netsh interface ip set ad ...

  7. FFmpeg 结构体学习(六): AVCodecContext 分析

    在上文FFmpeg 结构体学习(五): AVCodec 分析我们学习了AVCodec结构体的相关内容.本文,我们将讲述一下AVCodecContext. AVCodecContext是包含变量较多的结 ...

  8. [Swift]LeetCode289. 生命游戏 | Game of Life

    According to the Wikipedia's article: "The Game of Life, also known simply as Life, is a cellul ...

  9. [Swift]LeetCode689. 三个无重叠子数组的最大和 | Maximum Sum of 3 Non-Overlapping Subarrays

    In a given array nums of positive integers, find three non-overlapping subarrays with maximum sum. E ...

  10. [Swift]LeetCode878. 第 N 个神奇数字 | Nth Magical Number

    A positive integer is magical if it is divisible by either A or B. Return the N-th magical number.  ...