Jmeter和LR上传文件和下载

  背景:
  在某个申请业务中,需要上传附件文件,然后才能提交该申请
  遇到的问题:
  1,  在使用Jmeter或者LR进行录制时,无法录制到上传文件的请求,只能通过Fiddler能查看到该请求
  2,  因为录制不下来,只能手工构造,但网上相关的材料太少。
  所以在这里整理备忘
  Fiddler录制得到的请求的Header和Body如下面的两个截屏
  body
  截图如上,注意Header截图【Content-Type:multipart/form-data;boundary=----------cH2GI3Ef1gL6Ij5cH2gL6Ij5ei4gL6】和Body截图
  每一个“-----------------------------”为分隔符,代表一个表单域;
  最后一个“----------cH2GI3Ef1gL6Ij5cH2gL6Ij5ei4gL6--”(以“--”结尾)分隔符为表单域结束边界。
  由此可以看到我得到的这个请求,POST data中共有四个表单域,最后一个即包含了name=”Filedate”(这个name的值可以自己定),filename=”ff.txt”,下图中红框为ff.txt实际上传的文件内容
 
 
Server端的代码如下
  
 
一,Jmeter
需要注意
  1,请求类型为Post
  2,要勾选 Use multipart/form-data for POST,否则request中将不包含上传的文件
  3,  MIME类型为application/octet-stream
 
 
二,LoadRunner

lr_start_transaction("upload");
web_reg_save_param("attachmentId1",
"LB/IC=attachmentId\":\"",
"RB/IC=\"",
"Ord=1",
"Search=ALL",
LAST);
web_submit_data("upload.text",
"Action=http://192.168.0.1:8000/fileUpload/upload.text",
"Method=POST",
"EncType=multipart/form-data",
"RecContentType=text/plain",
"Referer=",
"Snapshot=t230.inf",
"Mode=HTTP",
ITEMDATA,
"Name=Filename","Value=Attachment.doc", ENDITEM,
"Name=attachmentType","Value=合同正本", ENDITEM,
"Name=Filedata","Value=Attachment.doc", "File=Yes", ENDITEM,
"Name=Upload","Value=Submit Query", ENDITEM,
LAST);
lr_end_transaction("upload",LR_AUTO);
  LoadRunner的下载
lr_start_transaction("downloadApproval");
web_reg_save_param("FileName",
"LB=filename=",
"RB=.pdf",
"Ord=1",
LAST);
web_url("generateApproval.html",
"URL=http:// 192.168.0.1:8000/xx/generateApproval.html?id={PersionId}",
"Resource=1",
"RecContentType=application/x-msdownload",
"Referer=http:// 192.168.0.1:8000/xx/viewWorkflow.html?id={PersionId}",
"Snapshot=t60.inf",
LAST);
lr_message("!!filename is%s.xml",lr_eval_string("{FileName}"));
//获取二进制文件类型的文件大小
flen =web_get_int_property(HTTP_INFO_DOWNLOAD_SIZE);
lr_message("Size:%d",flen);
lr_end_transaction("downloadApproval",LR_AUTO);

最新文章

  1. sys.syslockinfo--master..syslockinfo
  2. swift_简单值 | 元祖 | 流程控制 | 字符串 | 集合
  3. Sublime-jQueryDocs
  4. Qt 控制watchdog app hacking
  5. 设计模式_Proxy_代理模式
  6. 【Stage3D学习笔记续】真正的3D世界(三):纹理效果
  7. Installing scikit-learn
  8. November 4th Week 45th Friday 2016
  9. 【动态规划】Vijos P1616 迎接仪式
  10. 支付宝开通海外退税 阿里腾讯暗战跨境O2O_21世纪网
  11. 浅谈DevExpress<五>:TreeList简单的美化——自定义单元格,加注释以及行序号
  12. sd卡文件操作
  13. 版本控制工具(SVN/Git)介绍
  14. Description Resource Path Location Type Java compiler level does not match the version of(编译问题)
  15. centos中病毒
  16. 【Android】ContentValues的用法
  17. go基础知识之变量,类型,常量,函数
  18. Java(16-19)
  19. asp.net后台解析JSON,并将值赋给对象
  20. NGINX:sticky模块实现基于cookie的负载均衡

热门文章

  1. Xcode关闭警告
  2. matplotlib基础整理
  3. Linux部署node环境
  4. [转载]WCF和ASP.NET Web API在应用上的选择
  5. 20155226 2016-2017-2 《Java程序设计》第5周学习总结
  6. 【leetcode 简单】 第九十题 字符串中的第一个唯一字符
  7. 对某道ctf的一点点记录
  8. node.js 开发环境搭建
  9. HTML 解析 textarea 中的换行符
  10. js之事件冒泡和事件捕获及其阻止详细介绍