首页 > 解决方案 > 如何在 PHP 中获取表单图像数据

问题描述

这是我发布带有图片的广告的 HTML

<form id="product-form" name="myForm" action="{{ path_for( 'insert',{'user_id': userId} ) }}" method="GET" >
<table>
 <tr>
  {% for count in 1..10 %} 
   <td id="form-image{{loop.index}}" class="form-input-image">
     <input type="radio" name="cover-image" title="Cover Image" id="cover-image{{loop.index}}" class="cover-image" value="{{loop.index}}">
     <label for="file{{loop.index}}"> <img src="/OLX/Views/images/add_image.png" id="image{{loop.index}}" ></label>
     <input type="file"  accept="image/*" name="image" id="file{{loop.index}}" onchange="change({{loop.index}},event)" style="display: none;">
   </td>
  {% endfor %}
 </tr>
</table>
</form>

这是我的控制器功能

public function insertProduct( Request $request, Response $response, $intUserId ) {
        $arrmixInputData = $request->getParams();
        $intCoverImageNumber = $arrmixInputData["cover-image"];

             $filename = $_FILES['image'];
             var_dump($filename);
             die();
}

这是我的网址

http://localhost:8888/Products/insertProduct/2?title=Title&category_id=1&price=12345&purchase_date=2020-04-25&description=SAssds&cover-image=1&image=WIN_20190705_18_22_39_Pro.jpg

这是输出

Notice: Undefined index: image in F:\Xento_OLX_API's\Application\Controllers\OLX\COlxUserController.php on line 171
NULL

标签: phphtmltwig

解决方案


您的 HTML 中没有表单声明标记。如果您想将表单发送到服务器/如果您必须将文件发送到服务器,您应该使用正确的表单标签和 enctype

<form action="/action_page_binary.asp" method="post" enctype="multipart/form-data">
....... all your input tags here.
</form>

您可以在此处了解有关 HTML 表单的更多信息

如果您使用框架,则必须遵循文档,因为您将无权访问全局 $_FILES

超薄框架

$uploadedFiles = $request->getUploadedFiles();

Laravel 框架

$uploadedFiles = $request->file('photo');

推荐阅读