dtcd27183 2016-12-28 08:37
浏览 893

通过cURL发送multipart / form-data

I have the following HTML form:

<form enctype="multipart/form-data" id="upload_form" role="region" action="remoteUpload2.php?command=FileUpload&amp;type=Files&amp;currentFolder=%2F&amp;langCode=en&amp;hash=8e402b8b9927640d&amp;" method="POST" target="ckf_19">
<input name="upload" type="file">
<input value="Upload Selected File" type="submit">
<input name="cancel" value="Cancel" type="button">
</form>

When I submit it, if I do a print_r($_FILES) I get the following output:

Array
(
    [upload] => Array
        (
            [name] => logo.png
            [type] => image/png
            [tmp_name] => /tmp/phpvIFI0K
            [error] => 0
            [size] => 12201
        )

)

What I am trying to figure out is how to send a file the same way, using only PHP, to connect two different systems together. I can modify the sending script, but not the receiving script, so I need to send data in the format that is expected.

Is there a way using cURL for me to post data to this script that will result in similar output for $_FILES? I have the file I want to send on the server, I just need to figure out how to POST it to the receiving script.

  • 写回答

1条回答 默认 最新

  • dougu1045 2016-12-28 09:42
    关注

    I was able to solve this problem with the following code:

    // initialise the curl request
    $request = curl_init('http://www.example.com/connector.php');
    
    // send a file
    curl_setopt($request, CURLOPT_POST, true);
    curl_setopt($request, CURLOPT_SAFE_UPLOAD, false);
    curl_setopt(
        $request,
        CURLOPT_POSTFIELDS,
        array(
          'file' => '@' . realpath('logo.png') . ';filename=logo-test.png'. ';type=image/png'
        ));
    
    // output the response
    curl_setopt($request, CURLOPT_RETURNTRANSFER, true);
    
    if(curl_exec($request) === false)
    {
        echo 'Curl error: ' . curl_error($ch)."<br>";
    }
    else
    {
        echo 'Operation completed without any errors<br>';
    }
    
    // close the session
    curl_close($request);
    
    评论

报告相同问题?

悬赏问题

  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的
  • ¥15 r语言蛋白组学相关问题