【问题标题】:PHP upload file from server to another server using curl postPHP使用curl post将文件从服务器上传到另一台服务器
【发布时间】:2013-12-14 01:18:20
【问题描述】:

我需要一些帮助。

我有一个生成 xml 文件的 php 脚本,然后我需要使用 POST 将其提交到另一台服务器。 XML 文件没问题,因为我可以从命令行使用 curl 手动上传它。

我的代码是:

$file = 'temp.xml';
file_put_contents($file, $output);
$post = array('extra_info' => '123456','file_contents'=>'@'.$file);
$url = "<URL>";
$chlead = curl_init();
curl_setopt($chlead, CURLOPT_USERPWD, "<USER>:<PASSWORD>");
curl_setopt($chlead, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($chlead, CURLOPT_URL, $url);
curl_setopt($chlead, CURLOPT_VERBOSE, 1);
curl_setopt($chlead, CURLOPT_POST,1);
curl_setopt($chlead, CURLOPT_POSTFIELDS, $post);
curl_setopt($chlead, CURLOPT_RETURNTRANSFER, false);
$response = curl_exec($chlead);

我可以通过以下方式手动将文件上传到正确处理的服务器:

curl -v -k -u <USER>:<PASSWORD> -X POST --upload-file temp.xml <URL>

我错过了什么?我正在使用 PHP 5.2.17。此外,如果有一种方法可以在不将 xml 文件写入磁盘的情况下执行此操作,那就太好了。

谢谢

【问题讨论】:

  • 您需要像带有标题的表单一样提交它。看看这里的答案:stackoverflow.com/questions/3085990/…
  • 谢谢布赖恩!我必须添加代码:curl_setopt($chlead, CURLOPT_HTTPHEADER , array( 'Content-Type: text/xml', 'Content-Length: ' . strlen($output)));

标签: php post curl upload


【解决方案1】:

检查目标和文件url路径是否正确或使用绝对路径

【讨论】:

    猜你喜欢
    • 2017-01-23
    • 1970-01-01
    • 2011-12-03
    • 2011-11-05
    • 1970-01-01
    • 2015-09-30
    • 1970-01-01
    • 2014-05-17
    • 2018-01-19
    相关资源
    最近更新 更多