Php Curl发送带有数据的文件

时间:2017-03-20 22:29:38

标签: php curl slim

我需要在帖子数据中上传3个文件和变量。这就是我的电话 -

$data['type1'] = new CurlFile($file1);
$data['type2'] = new CurlFile($file2);
$data['type3'] = new CurlFile($file3);

curl_setopt($ch, CURLOPT_POSTFIELDS, $data, "var1: $val1", "var2: $val2"); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: multipart/form-data', "headkey: $headkeyValue"));

我无法从苗条框架中获取$app->request()->post('var1');。它是空的。

  • 我可以将headkey作为$app->request()->headers('headkey');
  • 从标题中获取
  • 我可以在$ _FILES
  • 中获取数据

3 个答案:

答案 0 :(得分:1)

这是因为使用HTTP POST方法上传的所有文件都在$_FILES全局变量中。这就是你无法通过这种方式访问​​文件的原因

$app->request()->post('val1');

但您可以使用$_FILES

$_FILES说明

  

通过HTTP POST方法上传到当前脚本的关联项目数组。 POST方法上传部分概述了此数组的结构。

答案 1 :(得分:1)

这就是我对的答案所做的:

$data['type1'] = new CurlFile($file1);
$data['type2'] = new CurlFile($file2);
$data['type3'] = new CurlFile($file3);

//New Code Added
$data['var1'] = "$val1";
$data['var2'] = "$val2";

//removed the trailing string
curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 

答案 2 :(得分:0)

这里是样本卷曲请求

$curlFile = curl_file_create($uploaded_file_name_with_full_path);
$post = array('val1' => 'value','val2' => 'value','file_contents'=> $curlFile );
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$your_url);
curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
$result=curl_exec ($ch);
curl_close ($ch);

不要忘记放置合适的标题 你也可以在这里找到好的来源 Curl File Upload  通过CURL发送文件。确保您在上面的代码中通过file_contents密钥传递文件。