为了账号安全,请及时绑定邮箱和手机立即绑定

通过cURL从PHP中的表单POST发送文件

通过cURL从PHP中的表单POST发送文件

PHP
哆啦的时光机 2019-08-27 15:22:02
通过cURL从PHP中的表单POST发送文件我正在编写API,我想要处理表单上的文件上传POST。表单的标记不是太复杂:<form action="" method="post" enctype="multipart/form-data">   <fieldset>     <input type="file" name="image" id="image" />     <input type="submit" name="upload" value="Upload" />   </fieldset></form>但是,我很难理解如何处理此服务器端并发送cURL请求。我熟悉用POSTcURL 发送带有数据数组的请求,我读过的关于上传文件的资源告诉我在文件名前加上一个@符号。但是这些相同的资源具有硬编码的文件名,例如$post = array(     'image' => '@/path/to/myfile.jpg',     ...);这是哪个文件路径?我在哪里可以找到它?它会是什么样的$_FILES['image']['tmp_name'],在这种情况下我的$post数组应该是这样的:$post = array(     'image' => '@' . $_FILES['image']['tmp_name'],     ...);或者我是以错误的方式来做这件事的?任何建议都将非常感激。编辑:如果有人可以给我一个代码片段,我将使用以下代码片段,那么我将非常感激。我主要关注我将作为cURL参数发送的内容,以及如何将这些参数与接收脚本一起使用的示例(让我们curl_receiver.php为了参数而调用它)。我有这个网页表格:<form action="script.php" method="post" enctype="multipart/form-data">   <fieldset>     <input type="file" name="image />     <input type="submit" name="upload" value="Upload" />   </fieldset></form>这将是script.php:if (isset($_POST['upload'])) {     // cURL call would go here     // my tmp. file would be $_FILES['image']['tmp_name'], and     // the filename would be $_FILES['image']['name']}
查看完整描述

3 回答

?
江户川乱折腾

TA贡献1851条经验 获得超5个赞

对于发现此帖并使用PHP5.5 +的人来说,这可能有所帮助。

我发现netcoder建议的方法不起作用。即这不起作用:

$tmpfile = $_FILES['image']['tmp_name'];$filename = basename($_FILES['image']['name']);$data = array(
    'uploaded_file' => '@'.$tmpfile.';filename='.$filename,);$ch = curl_init();   curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

我会在$_POSTvar中收到'uploaded_file'字段 - 而$_FILESvar中没有任何内容。

事实证明,对于php5.5 +curl_file_create()您需要使用一个新功能。所以上面会变成:

$data = array(
    'uploaded_file' => curl_file_create($tmpfile, $_FILES['image']['type'], $filename));

由于@格式现已弃用。


查看完整回答
反对 回复 2019-08-27
  • 3 回答
  • 0 关注
  • 508 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信