HTML/PHP多文件上传故障求助:单文件正常多文件报错
多文件上传$_FILES无响应问题排查
尝试用HTML/PHP实现多文件上传,单文件上传功能正常,但多文件上传时$_FILES变量完全无响应,try-catch语句也未捕获到异常,参考大量示例后仍无法解决问题。
HTML代码
<form id="NewImages" method="POST" action="../cgi-bin/saveImages.php?action=add"> <section id="ActionsBar" class ="actions-bar"> <div class="files-upload"> <input id="SelectFiles" name="selectfiles[]" type="file" accept="image/*" onchange="previewAll(this)" multiple> <label id="FilesLabel" class="form-label">Solo se permiten archivos tipo imagen (jpg|png|bmp|gif)</label> </div> <div style="display:inline-block; vertcial-align:top;"> <button id="UploadButton" name="uploadbutton" class="side-button" type="button" onclick="document.getElementById('Add').click()" disabled>Agregar Imagenes</button> </div> </section> <section id="Preview" class="flex-box"> <input id="Add" type="submit" style="display:none;"> <!-- div id="Loader" class="inner-box">--> <div id="pBox-0" class="service-box"> <figure id="pFigure-0"> <img id="pImage-0" src="../images/icon-house.png" alt="AGR Bienes Raices compra, venta y renta de casas en Querétaro"> </figure> <span id="pFile-0" class="file-name">*Nombre del archivo*</span> <div id="pDiv-0"> <div id="pDivInp1-0" class="div-input"><label id="pLabel1-0" class="form-label" for="pFrontPage-0">Mostrar en <abbr id="pAbbr1-0" title="Mostrar en pagina de bienvenida de AGR bienes raices">portada </abbr></label> <input id="pFrontPage-0" type="checkbox" class="form-input"></div> <div id="pDivInp2-0" class="div-input"><label id="pLabel2-0" class="form-label" for="pShowPicture-0">Mostrar en <abbr id="pAbbr2-0" title="Mostrar imágen en el catálogo de AGR bienes raices">catalogo </abbr></label> <input id="pShowPicture-0" type="checkbox" class="form-input"></div> <input id="pOrder-0" type="text" class="form-input-text" placeholder="1,2,3,.."> <input id="pExclude-0" type="button" class="no-button" value="Excluir" onclick="excludeBox(0)"> </div> </div> <!-- /div>--> </section> </form>
PHP代码(saveImages.php)
<?php session_start(); try{ $action=$_GET["action"]; include '/home/k3mq6hsrski5/agr/php/loadImage.php'; $logfile= '/home/k3mq6hsrski5/public_html/users/logs/user-' . date("Y-m-d") . '.log'; file_put_contents($logfile, date("H:i:s") . "*-- saveImage.php started --*\n", FILE_APPEND); $err =""; if ($_SERVER["REQUEST_METHOD"] == "POST") { if($action == "add") { $vFile = basename($_FILES["selectfiles"]["name"][0]); file_put_contents($logfile, date("H:i:s") . "-- Location:" . $_SESSION["location"] . ", Section:" . $_SESSION["section"] . ", file:$vFile\n", FILE_APPEND); $nFiles= count($_FILES['selectfiles']['name']); file_put_contents($logfile, date("H:i:s") . "-- Files to read:$nFiles --\n", FILE_APPEND); for ($i = 0; $i < $nFiles; $i++) { $vFile = basename($_FILES["selectfiles"]["name"][$i]); file_put_contents($logfile, date("H:i:s") . "-- Processing file:$vFile --\n", FILE_APPEND); if (uploadImg('selectfiles',$vFile,true,$i)!=true){ $err .= $_SESSION["err"]; } } header("Location: ../actions/images.php?asset=" . $_SESSION['currasset']); } elseif ($action == "save") { header("Location: ../actions/catalogue.php"); } else { header("Location: ../actions/images.php?asset=" . $_SESSION['currasset']); } } } catch (Exception $e) { $_SESSION["err"]= "Program saveImages.php failed and threw an excpetion."; $_SESSION["log"]= $e->getMessage(); header("Location: ../actions/userAck.php?target=/actions/images"); } ?>
问题排查与解决方案
1. 表单缺少关键属性(核心问题)
文件上传表单必须添加enctype="multipart/form-data"属性,否则服务器无法解析POST请求中的文件数据,导致$_FILES为空。
修正后的
相关产品推荐
相关产品推荐

