51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2479|回复: 6
打印 上一主题 下一主题

[求助] 无法在本地生成多个下载文件

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2014-7-3 09:30:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近做一个并发下载测试,模拟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)这一句有问题,但不确定,也不知道怎么改。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2014-7-3 15:03:27 | 只看该作者
使用lr_output_message("%s",file),把file打印出来看看,还有写文件的时候看一下是否是追加写入和不追加写入造成的,我没有试过,可以把你的结果发出来,共享一下。
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2014-7-3 15:23:21 | 只看该作者
回复 2# cghk4455

你说的那个打印file的语句,是加在哪个位置?我用的是追加,下载的一个视频文件,大小是3.44M,结果加到一起了,变成了7M多,然后就报超出边界了
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2014-7-3 15:48:03 | 只看该作者
回复 3# 开朗幽默


    打印加载你拼接好文件名后面,主要是看看文件名是否按照你设置的随机数生成成功,你的标题不是不能在本地生成多个下载文件吗,按照你的回答应该是获得了多个文件了吧。我只是猜可能是写文件的方式出的问题,所以你试一下不追加的方式。
回复 支持 反对

使用道具 举报

该用户从未签到

5#
 楼主| 发表于 2014-7-3 17:33:37 | 只看该作者
回复 4# cghk4455


    开始用的就是不追加,结果就只生成了一个文件
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2014-7-10 15:40:33 | 只看该作者
保存时候重名覆盖啦
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2014-7-10 15:40:44 | 只看该作者
保存时候重名覆盖啦
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-6 08:33 , Processed in 0.071690 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表