带有文件附件的PHP Curl

带有文件附件的PHP Curl,php,html,curl,web-scraping,scraper,Php,Html,Curl,Web Scraping,Scraper,我试图模拟一个需要上传文件的PHP cURL帖子 以下是我试图发布到的网站的HTML表单: 我需要上传的文件是“domains.txt”,它可以在与脚本相同的目录中找到 我使用Live HTTP头(firefox插件)检索到以下信息: POST to: http://www.majesticseo.com/reports/bulk-backlinks-upload HTTP标头: Host: www.majesticseo.com User-Agent: Mozilla/5.0 (Window

我试图模拟一个需要上传文件的PHP cURL帖子

以下是我试图发布到的网站的HTML表单:

我需要上传的文件是“domains.txt”,它可以在与脚本相同的目录中找到

我使用Live HTTP头(firefox插件)检索到以下信息:

POST to: http://www.majesticseo.com/reports/bulk-backlinks-upload
HTTP标头:

Host: www.majesticseo.com
User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: https://www.majesticseo.com/reports/bulk-backlink-checker
Cookie: _pk_id.2.d6bc=a607157d494109d4.1382175578.4.1388174858.1384073229.; RURI=reports%2Fbulk-    backlink-checker; _pk_ses.2.d6bc=*; STOK=Ox09WRWBeFCU3l3TAim86efmBa
Connection: keep-alive
Content-Type: multipart/form-data; boundary=---------------------------210646678590
Content-Length: 1106
帖子内容:

-----------------------------210646678590\r\n
Content-Disposition: form-data; name="fileType"\r\n
\r\n
SingleColumn\r\n
-----------------------------210646678590\r\n
Content-Disposition: form-data; name="indexType"\r\n
\r\n
F\r\n
-----------------------------210646678590\r\n
Content-Disposition: form-data; name="ajaxLoadUrl"\r\n
\r\n
/reports/downloads/confirm-file-upload/backlinksAjax\r\n
-----------------------------210646678590\r\n
Content-Disposition: form-data; name="file"; filename="domains.txt"\r\n
Content-Type: text/plain\r\n
\r\n
facebook.com\n
twitter.com\n
google.com\n
youtube.com\n
wordpress.org\n
adobe.com\n
blogspot.com\n
wikipedia.org\n
wordpress.com\n
linkedin.com\n
yahoo.com\n
amazon.com\n
flickr.com\n
w3.org\n
pinterest.com\n
apple.com\n
tumblr.com\n
myspace.com\n
microsoft.com\n
vimeo.com\n
digg.com\n
qq.com\n
stumbleupon.com\n
baidu.com\n
addthis.com\n
miibeian.gov.cn\n
statcounter.com\n
bit.ly\n
feedburner.com\n
nytimes.com\n
reddit.com\n
delicious.com\n
msn.com\n
macromedia.com\n
bbc.co.uk\n
weebly.com\n
blogger.com\n
icio.us\n
goo.gl\n
gov.uk\n
cnn.com\n
yandex.ru\n
webs.com\n
google.de\n
mail.ru\n
livejournal.com\n
sourceforge.net\n
go.com\n
imdb.com\n
jimdo.com\n
\r\n
-----------------------------210646678590--\r\n
在手动浏览器上载中,我使用的是domains.txt,它也是服务器上的文件(与脚本位于同一目录中)

我的脚本首先登录到,然后尝试发出此请求。 到目前为止,我一直在尝试这样做,但没有被接受:

$ch = curl_init();
$post = array('fileType' => 'SingleColumn',
              'indexType' => 'F',
              'ajaxLoadUrl' => '/reports/downloads/confirm-file-upload/backlinksAjax',
              'file'=>'@'.realpath('./domains.txt') . ';filename=domains.txt'
              );
$post = http_build_query($post);
curl_setopt($ch, CURLOPT_URL, "https://www.majesticseo.com/reports/bulk-backlinks-upload"); 
curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_TIMEOUT,         10); 
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT,  5 );
curl_setopt($ch, CURLOPT_COOKIEJAR,       'majestic.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE,      'majestic.txt');
curl_setopt($ch, CURLOPT_REFERER, 'https://www.majesticseo.com/reports/bulk-backlink-checker');
curl_setopt ($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
$result = curl_exec($ch); 
curl_close($ch);

Curl不能很好地处理相对路径,请提供完整路径。
ex:


realpath('/home/user/public_html/domains.txt')

感谢您的回复-这似乎没有奏效。。我是否缺少另一个参数,或者我是否错误地发布了此文件?请尝试增加
curl\u setopt($ch,CURLOPT\u TIMEOUT,10)或完全删除它。majestic.txt的内容是什么?
majestic.txt
有写权限吗?您好,
curl\u setopt($ch,CURLOPT\u TIMEOUT,10)已被删除;虽然页面没有超时
majestic.txt
写得正确,它是cookie文件。您也可以尝试在此处提供完整的URL:
'ajaxLoadUrl'=>'/reports/downloads/confirm file upload/backlinksAjax'
HTML表单包含的
不是完整的URL-有什么我做错了吗?如果您看一下我发布的“POST内容”,这就是手动提交使用HTTP嗅探器返回的内容。