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

#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. C++中几种输入输出cin、cin.getline()、getline()、sscanf()、sprintf()、gets()等

    1.cin和cout cout是输出流对象的名字,cin是输入流对象的名字 ,“<<”是流插入运算符(也可称流插入操作符〉,作用是将需要输出的内容插入到输出流中,默认的输出设备是显示器. ...

  2. 菜鸡谈OO 第二单元总结

    “欢迎来到(玄学)多线程的新世界” Homework1 单部傻瓜电梯调度 Part1 多线程设计策略 第一次学到了线程这个概念,与之前的编程体验大有不同.最大的区别在于从原本的线性发生程序变成了多个行 ...

  3. Bulk API

    承接上文,使用Java High Level REST Client操作elasticsearch Bulk API 高级客户端提供了批量处理器以协助批量请求 Bulk Request BulkReq ...

  4. jq 点击复制div里面的内容 如果粘贴到富文本中,会将样式,里面所有的标签,文字一并粘贴进去

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  5. python从入门到实践-11章测试模块(测试函数出问题)

    #!/user/bin/env python# -*- coding:utf-8 -*- # 用python中unittes中工具来测试代码 # 1.测试函数import unittestfrom n ...

  6. idea导入maven项目,找不到jar包,出现红色波浪线【转】

    参考链接 点击跳转

  7. python语法_模块

    方便调用的分组函数文件,一个py模块就是一个模块,模块分三类 python标准库 第三方模块 应程序自定义模块 模块的掉用: 可以把多个功能(函数)包含在一个模块文件里,调用时直接使用import 就 ...

  8. [编译] 4、在Linux下搭建nRF51822的开发烧写环境(makefile版)

    星期日, 09. 九月 2018 07:51下午 - beautifulzzzz 1.安装步骤 1) 从GNU Arm Embedded Toolchain官网下载最新的gcc-arm工具链,写文章时 ...

  9. Druid的简介

    Druid的简介 Druid首先是一个数据库连接池.Druid是目前最好的数据库连接池,在功能.性能.扩展性方面,都超过其他数据库连接池,包括DBCP.C3P0.BoneCP.Proxool.JBos ...

  10. 动态规划----最长递增子序列问题(LIS)

    题目: 输出最长递增子序列的长度,如输入 4 2 3 1 5 6,输出 4 (因为 2 3 5 6组成了最长递增子序列). 暴力破解法:这种方法很简单,两层for循环搞定,时间复杂度是O(N2). 动 ...