PHP cURL文件上传

3

早上好,

我正在使用一个基因相似性在线工具,并且需要通过php模拟用户的选择。在线表单中有各种选择框、一个文本域(UserData)和一个文件类型的按钮。

因此,我捕获了发送在线表单的POST数据,内容如下:

POSTDATA =-----------------------------114782935826962
Content-Disposition: form-data; name="SMeasure"

3
-----------------------------114782935826962
Content-Disposition: form-data; name="SOntology"

2
-----------------------------114782935826962
Content-Disposition: form-data; name="SFamily"

2
-----------------------------114782935826962
Content-Disposition: form-data; name="IncludeIEA"

1
-----------------------------114782935826962
Content-Disposition: form-data; name="SApproach"

2
-----------------------------114782935826962
Content-Disposition: form-data; name="Identifier"

1
-----------------------------114782935826962
Content-Disposition: form-data; name="UserData"


-----------------------------114782935826962
Content-Disposition: form-data; name="InputFile"; filename="CHI2-GR.txt"
Content-Type: text/plain

Q15942 Q15942
Q15942 P27918
Q15942 P01034
Q15942 P01040
Q15942 P04053
Q15942 P00746
Q15942 P20138
Q15942 P10620
Q15942 P15923
Q15942 Q06481
P27918 Q15942
P27918 P27918
P27918 P01034
P27918 P01040
P27918 P04053
P27918 P00746
P27918 P20138
P27918 P10620
P27918 P15923
P27918 Q06481
P01034 Q15942
P01034 P27918
P01034 P01034
P01034 P01040
P01034 P04053
P01034 P00746
P01034 P20138
P01034 P10620
P01034 P15923
P01034 Q06481
P01040 Q15942
P01040 P27918
P01040 P01034
P01040 P01040
P01040 P04053
P01040 P00746
P01040 P20138
P01040 P10620
P01040 P15923
P01040 Q06481
P04053 Q15942
P04053 P27918
P04053 P01034
P04053 P01040
P04053 P04053
P04053 P00746
P04053 P20138
P04053 P10620
P04053 P15923
P04053 Q06481
P00746 Q15942
P00746 P27918
P00746 P01034
P00746 P01040
P00746 P04053
P00746 P00746
P00746 P20138
P00746 P10620
P00746 P15923
P00746 Q06481
P20138 Q15942
P20138 P27918
P20138 P01034
P20138 P01040
P20138 P04053
P20138 P00746
P20138 P20138
P20138 P10620
P20138 P15923
P20138 Q06481
P10620 Q15942
P10620 P27918
P10620 P01034
P10620 P01040
P10620 P04053
P10620 P00746
P10620 P20138
P10620 P10620
P10620 P15923
P10620 Q06481
P15923 Q15942
P15923 P27918
P15923 P01034
P15923 P01040
P15923 P04053
P15923 P00746
P15923 P20138
P15923 P10620
P15923 P15923
P15923 Q06481
Q06481 Q15942
Q06481 P27918
Q06481 P01034
Q06481 P01040
Q06481 P04053
Q06481 P00746
Q06481 P20138
Q06481 P10620
Q06481 P15923
Q06481 Q06481
-----------------------------114782935826962
Content-Disposition: form-data; name="Submit"

Submit
-----------------------------114782935826962--

我的php代码只有这样:

<?php 

$url = 'http://web.cbio.uct.ac.za/ITGOM/tools/itgomEngine.php';     

$postData = array();
$postData['SMeasure'] = '3';
$postData['SOntology'] = '2';
$postData['SFamily'] = '2';
$postData['IncludeIEA'] = '1';
$postData['SApproach'] = '2';
$postData['Identifier'] = '1';
$postData['UserData'] = "";
$postData['InputFile'] = '@C:/Users/Matteo/Desktop/prova_uniprot/CHI2-GR.txt';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch, CURLOPT_POST, true );
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);

$response = curl_exec($ch);

echo $response;

?>

我可以正确设置选择选项,但是当我尝试设置文件时,会出现“仅允许输入txt文件”的错误。 如果我尝试这样做:

$postData['InputFile'] = '@C:/Users/Matteo/Desktop/prova_uniprot/CHI2-GR.txt;type=text/plain';

我收到了错误信息“输入中没有基因列表”。有什么想法吗?
谢谢!

你的PHP版本是什么? - Rahil Wazir
我正在使用EasyPHP 14.1 VC9,支持PHP 5.4。 - user3571903
谢谢回复!表单没有提交,我在页面顶部得到了这个错误响应,您可以在这里看到:[链接](https://www.dropbox.com/s/81z3h3kgk8gkguu/Screenshot%202014-04-29%2012.19.36.png)。如果代码有效,您应该会得到像这样的页面[链接](https://www.dropbox.com/s/v7c7fcfep64y37j/Screenshot%202014-04-29%2012.23.56.png) - user3571903
不,我遇到了错误“运行失败!缺少基因列表,即感兴趣的基因列表”。有没有一种方法可以指定文件的内容? - user3571903
当然可以使用文件系统函数,如fwritefopen,请查看手册。 - Rahil Wazir
显示剩余22条评论
1个回答

0
有关此事有任何更新吗?我刚刚使用另一个文件测试了您的原始代码: $postData['InputFile'] = '@C:/Users/../test.txt';
它完美地运行了。

谢谢回复。我已经尝试了这个:$postData['InputFile'] = '@C:\Users\Matteo\Desktop\test.txt',但我总是得到相同的错误。我的代码在EasyPHP上运行良好,是否需要在php.ini上进行特殊设置?当您运行我的代码时,您会得到一个相似度表格,还是简单的表格? - user3571903
我从在线工具的响应中得到了一个错误信息:“对于基因列表文件,只推荐使用txt格式!”这非常奇怪,因为输入文件明显是一个txt文件。 - user3571903

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接