首页 > 解决方案 > PHP不发送reposnse

问题描述

我对 php 有一个非常奇怪的问题,我找不到任何解释。我想添加这行代码以从发送的文件中获取扩展名:

$extension = array_pop( explode( "." , $_FILES["myFiles"]["name"][$key]);

但是如果我这样做了,尽管文件已成功保存,但 php 不会发送响应。如果我只是删除这一行并硬编码“.jpg”而不是 $extension 它会按预期发送响应。

<?php

$response = array();

if (isset($_FILES)) {
    foreach ($_FILES["myFiles"]["tmp_name"] as $key => $value) {
        $user = $_POST["user"];
// when i add the line below it deosn't send the response!
        $extension = array_pop( explode( "." , $_FILES["myFiles"]["name"][$key]) );
        move_uploaded_file($value, "uploads/$user.$extension");
    };
    $response["msg"] = "image has been uploaded";
} else {
    $response["msg"] = "selcect an image";
}

echo json_encode($response);

标签: php

解决方案


array_pop通过引用获取参数。您不能直接从另一个函数向 array_pop 提供参数。相反,在您的情况下,您应该这样做:

$parts = explode("." , $_FILES["myFiles"]["name"][$key]);
$extension = array_pop($parts);

但!你永远不应该相信客户的数据,即使它只是一个文件扩展名。最好检查扩展名本身(是 jpg、png、svg、gif),还要检查文件是否真的是图像,检查该图像的大小等...


推荐阅读