2014-02-19 25 views
1

一个文件,我没有太大的PHP的人,而是试图端口CLI CURL调用PHP ......我原本:PHP发布卷翘无头

curl -i -H "Content-Type: text/csv" -X POST --data-binary @$filepath $destination 

我试图把到这一点:

<?php 
$data['Filedata'] = "@".$filepath; 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $destination.'/_'); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 
curl_setopt($ch, CURLOPT_HEADER, 1); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: text/csv")); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
$output = curl_exec($ch); 
curl_close($ch); 
?> 

的问题是,这会导致被预置到所述目的地的额外首标,包含------------------------------6614b0cf8aae Content-Disposition: form-data; name=Filedata; filename=$filepath Content-Type: application/octet-stream.

我假定这是因为我用$data['Filedata']的方式,因此我吨用下面的代码替换CURLOPT_POSTFIELDS行,但这只是最终发布路径字符串而不是文件本身。

curl_setopt($ch, CURLOPT_POSTFIELDS, "@".$filepath); 

任何人都介意指出我失踪了什么?就像我说的,不是一个PHP人!

+0

你试过curl_setopt($ ch,CURLOPT_HEADER,0); ? –

回答

2

只是直接加载文件内容,它会这样做。目前,您正在执行与原始curl命令行不同的键/值削减POST数据。

curl_setopt($ch, CURLOPT_POSTFIELDS, file_get_contents($filepath)); 
+0

谢谢,这样做! – serilain