免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5804 | 回复: 6
打印 上一主题 下一主题

multipart formdata格式的post 如何用perl模拟上传文件讷 [复制链接]

论坛徽章:
3
摩羯座
日期:2013-09-04 12:01:36申猴
日期:2013-10-23 12:12:23CU十二周年纪念徽章
日期:2013-10-24 15:41:34
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-10-14 16:19 |只看该作者 |倒序浏览
20可用积分
本帖最后由 grshrd49 于 2013-10-15 16:05 编辑

网上实在找不到相关的帖子,cpan上也找不到灵感,感觉不是上传格式写错了就是其他啥问题。总之用jmeter做的上传脚本正常运行,改用perl写就不行了,有大牛来给诊脉不?

这个是页面提交的post表单中的其中一块
改了好好多次了,普通的请求数据服务器都收到了,但是文件上传这块服务器始终没有收到,返回也没有任何错误!
有人对post请求有深入了解的没?

  1. POST data:
  2. --rqZkSQWTz_5hfkhgvH8r6garI7hGxw
  3. Content-Disposition: form-data; name="myFile"; filename="316x250.png"
  4. Content-Type: image/png
  5. Content-Transfer-Encoding: binary

  6. <actual file content, not shown here>
  7. --rqZkSQWTz_5hfkhgvH8r6garI7hGxw--
复制代码
我的代码片段

  1. ######
  2. #创建survey_title
  3. ######'C:\Users\Public\Pictures\testPic\316x250\316x250.png'
  4. open MF,"316x250.png";
  5. my $read;
  6. while(<MF>){
  7.         $read .= $_;
  8. }
  9. close MF;
  10. #print @readfile;
  11. $return_json = $ua->post("$base_url/survey/a/editSurvey",
  12.         {
  13.         paperImage=>'',
  14.         surveyTitle=>'perlscriptest2',
  15.         surveyDesc=>'descperl',
  16.         },
  17.         myFile=>$read,
  18.         filename=>"316x250.png",
  19.         'Referer'=>"$base_url/survey",
  20.         'Content-Type'=>"multipart/form-data;",
  21.        
  22. )->content;
  23. my $surveyid;
  24. $surveyid = $1 if($return_json =~ /"surveyId":"(\d+)"/);
  25. print "surveyid = $surveyid\n";
  26. print "editSurvey - $return_json\n";
  27. print FF "editSurvey - $return_json\n";
复制代码

论坛徽章:
42
19周年集字徽章-周
日期:2019-10-14 14:35:31平安夜徽章
日期:2015-12-26 00:06:30数据库技术版块每日发帖之星
日期:2015-12-01 06:20:002015亚冠之首尔
日期:2015-11-04 22:25:43IT运维版块每日发帖之星
日期:2015-08-17 06:20:00寅虎
日期:2014-06-04 16:25:27狮子座
日期:2014-05-12 11:00:00辰龙
日期:2013-12-20 17:07:19射手座
日期:2013-10-24 21:01:23CU十二周年纪念徽章
日期:2013-10-24 15:41:34IT运维版块每日发帖之星
日期:2016-01-27 06:20:0015-16赛季CBA联赛之新疆
日期:2016-06-07 14:10:01
2 [报告]
发表于 2013-10-14 16:38 |只看该作者
本帖最后由 laputa73 于 2013-10-14 16:45 编辑

perl lwp的没弄过
不过curl命令是可以的
http://tech.idv2.com/2006/12/08/upload-with-curl/

mojo的ua也是有例子的
http://cpan.php-oa.com/perldoc/M ... 591A%6BB5%4E0A%4F20
  1.   use Mojo::UserAgent;

  2.   # 上传文件通过 POST 的 HTTP 方法,并且会修改成  "multipart/form-data" 的类型
  3.   my $ua = Mojo::UserAgent->new;
  4.   $ua->post_form('mojolicio.us/upload',
  5.     {image => {file => '/home/sri/hello.png'}});
复制代码

论坛徽章:
3
摩羯座
日期:2013-09-04 12:01:36申猴
日期:2013-10-23 12:12:23CU十二周年纪念徽章
日期:2013-10-24 15:41:34
3 [报告]
发表于 2013-10-14 17:12 |只看该作者
回复 2# laputa73

额 通过mojo来了点灵感,但还是不行....
  1. $return_json = $ua->post("$base_url/survey/a/editSurvey",
  2.         {
  3.         paperImage=>'',
  4.         surveyTitle=>'perlscriptest2',
  5.         surveyDesc=>'descperl',
  6.         },
  7.         myFile=>{filename=>'316x250.png'},
  8.         'Referer'=>'$base_url/survey',
  9.         'Content-Type'=>"multipart/form-data;",
  10. )->content;
复制代码

论坛徽章:
3
摩羯座
日期:2013-09-04 12:01:36申猴
日期:2013-10-23 12:12:23CU十二周年纪念徽章
日期:2013-10-24 15:41:34
4 [报告]
发表于 2013-10-15 14:53 |只看该作者
没人啊 没人啊!

论坛徽章:
3
摩羯座
日期:2013-09-04 12:01:36申猴
日期:2013-10-23 12:12:23CU十二周年纪念徽章
日期:2013-10-24 15:41:34
5 [报告]
发表于 2013-10-15 14:56 |只看该作者
悬赏都没人,是不是分给少了啊

论坛徽章:
3
摩羯座
日期:2013-09-04 12:01:36申猴
日期:2013-10-23 12:12:23CU十二周年纪念徽章
日期:2013-10-24 15:41:34
6 [报告]
发表于 2013-10-15 16:02 |只看该作者
诶 求人不如求自己,搞定了
  1. $return_json = $ua->post("$base_url/survey/a/editSurvey",
  2.         {
  3.         paperImage=>'',
  4.         surveyTitle=>time()."_PerlScripTest",
  5.         surveyDesc=>'descperl',
  6.         myFile=>["316x250.png"],
  7.         },
  8.         'Referer'=>'$base_url/survey',
  9.         'Content-Type'=>"multipart/form-data;",
  10. )->content;
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP