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

#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 ;
}

最新文章

  1. RSA 加解密转换
  2. nginx 优化
  3. Win7下安装双系统Centos,并修复Centos引导加载程序安装在U盘上的问题
  4. C# MDI 子窗体被父窗体控件挡住
  5. mobile javascript
  6. Java动态 遍历List 时删除List特征元素 异常问题 及解决方案总结
  7. css两列布局,一边固定宽度,另一边自适应
  8. Web调试利器fiddler使用
  9. mac下使用mysql控制台命令行
  10. tomcat9配置https
  11. [daily][cgroup] 使用cgroup限制进程的CPU占用
  12. splice的多种用法
  13. Linux下安装Nginx依赖包和Nginx的命令
  14. 复杂度分析 quick sort&merge sort
  15. Eclipse C++,Cygwin 64,gcov,lcov 单体&覆盖率测试环境搭建笔记
  16. 在PHP中使用MySQL Mysqli操作数据库 ,以及类操作方法
  17. Charles工具内存不足时解决办法
  18. awk的使用
  19. Linux du查询文件大小
  20. MyEclipse去除网上复制下来的代码带有的行号(使用正则表达式)

热门文章

  1. web测试点总结---UI、兼容、功能、交互、安全、性能、接口测试
  2. react基础篇 整理(一)
  3. [转]Understanding OpenStack Authentication: Keystone PKI
  4. [Swift]LeetCode67. 二进制求和 | Add Binary
  5. 微信小程序开发小结
  6. Visual Studio 2017 怎么将自动生成属性设置为旧版格式
  7. CentOS 7 源码编译安装 Nginx
  8. System.Data.Entity.Infrastructure.DbUpdateException
  9. .net文件上传默认限制了大小4M
  10. 并发编程(七)——AbstractQueuedSynchronizer 之 CountDownLatch、CyclicBarrier、Semaphore 源码分析