21,886
社区成员
发帖
与我相关
我的任务
分享
$file = realpath('0.txt');
$fields = array(
'f' => '@'.$file,
'' => 'abcd', //没有名字就收不到,反之就可以收到
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"http://localhost/ajax_server.php?id=1");
curl_setopt($ch, CURLOPT_POST, 1 );
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
curl_exec ($ch);
curl_close ($ch);
但是数据是完整的传到了--------------------------6e77d33195b440f3
Content-Disposition: form-data; name="f"; filename="D:\\AMP\\web\\0.txt"
Content-Type: application/octet-stream
这是一个测试
--------------------------6e77d33195b440f3
Content-Disposition: form-data; name=""
abcd
--------------------------6e77d33195b440f3--
所以最好是与客户端的开发人员协商,给每个数据项都起个名字
当然你也可以用 php 来解决这个问题,那就是在 php.ini 中加上
enable_post_data_reading = Off
这就阻止了 php 解析 post 方式数据的动作
输入流就可以被 php://input 取到了
然后你再对读到的数据分类保存,你肯定比 php 勤快,不可能忽略掉没有名字的数据项了
注意:由于你阻止了 php 对 post 数据的解析额,所以 $_POST、$_FILES 都无效了!应用时切切注意