【问题标题】:Cannot send a file with curl to another server无法将带有 curl 的文件发送到另一台服务器
【发布时间】:2014-01-21 20:16:05
【问题描述】:

该场景是从 server1 中的 PHP 应用程序将文件发送到 server2 中的 C#.net 应用程序,但是:

  • 使用简单的 HTML 表单发送文件时,目标服务器可以毫无问题地接收它
  • 使用 cURL 发送文件并通过 server1 使用 PHP 接收文件时,文件接收没有问题。
  • 使用 cURL 发送该文件时,我从目标服务器收到错误 500

请注意,我无权访问目标服务器,并且由于 HTML 表单提交成功,其管理员确信一切正常。

<?php
$filedata = $fileName;
$headers = array("Content-Type:multipart/form-data"); 
$postfields = array("filedata" => "@$filedata", "filename" => $fileName);
$ch = curl_init();
$options = array(
    CURLOPT_URL => 'http://server1/newspanel/index.php/jnews/get', //200
    //CURLOPT_URL => 'http://server2/postphoto.aspx', //500
    CURLOPT_HEADER => true,
    CURLOPT_POST => 1,
    CURLOPT_HTTPHEADER => $headers,
    CURLOPT_POSTFIELDS => $postfields,
    CURLOPT_INFILESIZE => filesize($filedata),
    CURLOPT_RETURNTRANSFER => true
); 
curl_setopt_array($ch, $options);
curl_exec($ch);

我的代码有什么问题,只有我可以接收文件?

【问题讨论】:

  • @kohjah 它对我来说也很好,但是当我发送文件时我仍然收到错误 500。

标签: php curl cross-platform


【解决方案1】:

问题是 .net 对请求的头部参数敏感,而 PHP 不敏感!
您必须通过 cURL 提及所有参数,就像浏览器向服务器发送请求一样。
发送Accept-EncodingAccept-LanguageCache-ControlConnectionUser-Agent 等参数似乎可以解决问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-24
    • 2017-01-23
    • 2022-12-05
    • 1970-01-01
    • 2013-09-24
    • 1970-01-01
    相关资源
    最近更新 更多