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

#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. iOS逆向工程概述(转)

    逆向工程一词,对很多人来说可能很陌生,在android领域,我们经常会听到“反编译某个apk”,那么逆向工程从某种角度讲也包括反编译这项技术,这样一对比,可能我们就更容易理解逆向工程的定义了. 我们引 ...

  2. C#线程 ---- 线程同步详解

    线程同步 说明:接上一篇,注意分享线程同步的必要性和线程同步的方法. 测试代码下载:https://github.com/EkeSu/C-Thread-synchronization-C-.git 一 ...

  3. Linux Rabbit的使用

    安装RabbitMQ 1.安装Erlang yum -y install epel-release yum -y update yum -y install erlang socat yum -y i ...

  4. python 可迭代对象 迭代器 生成器总结

    可迭代对象 只要有魔法方法__iter__的就是可迭代对象  list和tuple和dict都是可迭代对象 迭代器 只要有魔法方法__iter__和__next__的就是可迭代对象 生成器 只要含有y ...

  5. day11函数(形参实参)

    形参与实参 def fn(形参们): pass # 形参:定义函数,在括号内声明的变量名,用来结束外界传来的值# 实参:调用函数,在括号内传入的实际值,值可以为常量.变量.表达式或三者的组合 # 注: ...

  6. mysql根据字符截取字符串(总结)

    mysql根据字符截取字符串(总结) 1.1 前言   为结合自己平常查资料的习惯,我会先给出例子,然后再对相关知识进行详解.该案例使用到的函数为:SUBSTRING_INDEX 1.2 需要实现的实 ...

  7. EF Core中避免贫血模型的三种行之有效的方法(翻译)

    Paul Hiles: 3 ways to avoid an anemic domain model in EF Core 1.引言 在使用ORM中(比如Entity Framework)贫血领域模型 ...

  8. [Java]LeetCode117. 填充同一层的兄弟节点 II | Populating Next Right Pointers in Each Node II

    Given a binary tree struct TreeLinkNode { TreeLinkNode *left; TreeLinkNode *right; TreeLinkNode *nex ...

  9. [Swift]LeetCode900. RLE 迭代器 | RLE Iterator

    Write an iterator that iterates through a run-length encoded sequence. The iterator is initialized b ...

  10. 数据攻略●R语言自述

    (注明:以下文章均在Linux操作系统下执行) 一.R语言简介 R语言是用于统计分析,图形表示和报告的编程语言和软件环境.R语言由Ross Ihaka和Robert Gentleman在新西兰奥克兰大 ...