51Testing软件测试论坛
标题:
无法在本地生成多个下载文件
[打印本页]
作者:
开朗幽默
时间:
2014-7-3 09:30
标题:
无法在本地生成多个下载文件
最近做一个并发下载测试,模拟50个用户同时下载一个文件到本地。但是本地文件夹里边,只有一个文件,不是应该生成50个文件的吗?不知道怎么回事,求解!脚本如下:
Action()
{
int flen;//定义一个整型变量保存获得文件的大小
long filedes; //保存文件句柄
char file[1024]="\0";//保存文件路径及文件名
char * strNumber;//定义一个随机数
strNumber=lr_eval_string("{NewParam}");//Returns the string argument after evaluating embedded parameters.
strcat(file,"F:\\test\\");//将路径保存到file变量中
strcat(file,strNumber);//将获得的随机数拼接在file变量之后
strcat(file,".flv");//将下载的文件后缀名.flv拼接在file变量之后
web_set_max_html_param_len("9999999");//设置参数的最大长度,注意该值必须大于文件的大小
web_reg_save_param("fcontent",
"LB=",
"RB=",
"Search=BODY",
LAST);
//使用关联函数获取下载文件的内容,在这里不定义左右边界,获得服务器响应的所有内容
/*下载课件*/
lr_rendezvous("开始下载");
lr_start_transaction("下载文件");
web_url("XX767.flv",
"URL=http://video.gwybroad.com/gwy201311/XX767.flv",
"Resource=0",
"RecContentType=application/octet-stream",
"Referer=",
"Snapshot=t1.inf",
LAST);//发送下载课件的请求
flen = web_get_int_property(HTTP_INFO_DOWNLOAD_SIZE);//获取响应中的文件长度
if(flen > 0)
{
//以写方式打开文件
if((filedes = fopen(file, "a+")) == NULL)
{
lr_output_message("打开文件失败!",lr_eval_string("{filecontent}"))
return -1;
}
//写入文件内容
fwrite(lr_eval_string("{fcontent}"), flen, 1, filedes);
fclose(filedes);//关闭文件
}
lr_end_transaction("下载文件",LR_AUTO);
return 0;
}
我怀疑是 if((filedes = fopen(file, "a+")) == NULL)这一句有问题,但不确定,也不知道怎么改。
作者:
cghk4455
时间:
2014-7-3 15:03
使用lr_output_message("%s",file),把file打印出来看看,还有写文件的时候看一下是否是追加写入和不追加写入造成的,我没有试过,可以把你的结果发出来,共享一下。
作者:
开朗幽默
时间:
2014-7-3 15:23
回复
2#
cghk4455
你说的那个打印file的语句,是加在哪个位置?我用的是追加,下载的一个视频文件,大小是3.44M,结果加到一起了,变成了7M多,然后就报超出边界了
作者:
cghk4455
时间:
2014-7-3 15:48
回复
3#
开朗幽默
打印加载你拼接好文件名后面,主要是看看文件名是否按照你设置的随机数生成成功,你的标题不是不能在本地生成多个下载文件吗,按照你的回答应该是获得了多个文件了吧。我只是猜可能是写文件的方式出的问题,所以你试一下不追加的方式。
作者:
开朗幽默
时间:
2014-7-3 17:33
回复
4#
cghk4455
开始用的就是不追加,结果就只生成了一个文件
作者:
西风一任秋
时间:
2014-7-10 15:40
保存时候重名覆盖啦
作者:
西风一任秋
时间:
2014-7-10 15:40
保存时候重名覆盖啦
欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/)
Powered by Discuz! X3.2