【问题标题】:Fowarding a multipart form data with php and cURL使用 php 和 cURL 转发多部分表单数据
【发布时间】:2013-04-12 23:49:42
【问题描述】:

我正在使用 cURL 在 PHP 中开发一个小型代理。它必须接收来自客户端的 http 请求,对这些请求进行一些统计,将请求转发到 Web 服务器并将响应转发给客户端。 GET 请求和带有 text/html 数据的 POST 请求一切正常。

我在使用 multipart/form-data 数据转发请求时遇到问题,特别是我在 $_POST 和 $_FILES 全局变量中都有数据。

我应该如何使用这两个变量将请求转发到服务器?

【问题讨论】:

  • multipart/form-data发送数据,切勿使用curl_setopt($ch, CURLOPT_POST, true);$post必须是数组。
  • @virpara - 不正确。请看here
  • @pguardiario 实际上,该帖子不使用curl 自己的功能来发送multipart/form-data 它只是以multipart/form-data 的形式传递字符串并设置标题。这就是multipart_build_query($f,$b) 的功能。

标签: php post curl proxy multipartform-data


【解决方案1】:

您需要先将文件存储在服务器中,然后使用如下代码:

<?php
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_VERBOSE, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible;)");
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POST, true);
    $post = array(
        "file_box"=>"@/path/to/myfile.jpg",
    );
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post); 
    $response = curl_exec($ch);
?>

【讨论】:

  • 我同意你的观点,但我不清楚继续进行。通常在 $_FILES 我有一个数组这样 $_FILES = array ( upload_file: Array( name: filename.suffix, type: text/html, tmp_name: C:\client_temp_dir\phpAD3C.tmp, error: 0, size: 100, ) )
猜你喜欢
  • 2022-11-11
  • 1970-01-01
  • 1970-01-01
  • 2014-03-29
  • 2019-05-12
  • 1970-01-01
  • 2017-07-29
  • 1970-01-01
  • 2012-06-08
相关资源
最近更新 更多