当前位置: 首页 > 知识库问答 >
问题:

为什么PHP不总是上传文件

宰烈
2023-03-14

我不知道这是与代码有关还是与服务器有关...

在一个PHP页面上,我调用了一个包含标准PHP上传过程的上传函数。在调用函数之后,我执行重定向(尝试使用window.location或header())。

奇怪的是,每件事都运行良好的几次,然后它就不会再上传了(uploadOK也不会是0)。它不会将文件移动到服务器上。

然后,我将取出重定向,上传将重新开始工作。我把重定向放回去,上传还能工作几次,然后再停止....你知道为什么吗?

另一个奇怪的地方是,即使在不工作的情况下,上传函数仍然返回正确的路径+文件名,但不会回显“文件...已上传”。

我怀疑问题可能出在move_uploaded_file()函数中...但它不会返回0,因为“错误...”不会得到回应。

上传后不需要调用重定向,它每次上传都很好。

PHP页面:

$_SESSION["temp_file_name"]="../".UploadFisier($_FILES["fileToUpload"], $_SESSION["ID_CLASA"]."_".$id_item."_temp_".UserIdLogat($dbocr)."_", "../teme/", "");     
header("Location: trimite_tema_script.php");

上传功能:

function UploadFisier($file, $sufix, $target_dir, $maxsize)
{
    if ($maxsize=="") { $maxsize=3000000; }
    if ($target_dir=="") { $target_dir="../upload/"; }

    $target_empty_file=$target_dir.$sufix;
    $target_file = $target_empty_file.basename($file["name"]);

    $uploadOk = 1;


    if ($target_file != $target_empty_file)
    {
        if ($file["size"] > $maxsize)
        {
            echo "file too large";
            $uploadOk = 0;
        }
    }
    else
    {
       echo "no file selectec.";
       $uploadOk = 0;
    }

    if ($uploadOk == 1)
    {
        //we overwrite
        if (file_exists($target_file))
        {
            unlink($target_file);
        }
        if (move_uploaded_file($file["tmp_name"], $target_file))
        {
            echo "File ". basename( $file["name"]). " was uploaded.";
            //we output the path and filename without the "../" at the beginning
            $linksave=substr($target_file, 3);
        }
        else
        {
           
            echo "Error....";
        }
    }
    echo "uploadOk ".$uploadOk;
    return $linksave;
}

共有2个答案

邵星光
2023-03-14

在代码中包装try/catch。也许你会发现更多关于错误的信息。

function UploadFisier($file, $sufix, $target_dir, $maxsize)
{
    try {
       // your code
    } catch (\Exception $e) {
         echo $e->getMessage();
         die();
    }
}
黄元章
2023-03-14

检查php.ini中的file_uploads值并确认如下所示

file_uploads = On
 类似资料:
  • 问题内容: 我在Windows 7计算机上安装了WampServer 2。我正在使用Apache 2.2.11和PHP 5.2.11。当我尝试从表单上传任何文件时,似乎都在上传,但是在PHP中,数组为空。文件夹中没有文件。我已配置为允许文件上传等。该文件夹具有当前用户的读/写特权。我很沮丧 HTML: PHP: 问题答案: 谢谢大家的全面答复。这些都非常有帮助。答案很奇怪。事实证明,PHP 5.2

  • 问题内容: 经过一整天的研究和尝试,我终于放弃了 纯AJAX的 上传文件(ps:本文如何与JQuery异步上传文件?埋了我的最后希望) 我的问题可能没什么意义,但是我仍然想知道为什么ajax(或XMLHttpRequest)不能处理这个问题?为什么文件不能像真正的httprequest那样传输? 问题答案: 出于安全原因,JavaScript无法读取本地文件,因此我们无法使用AJAX发送数据。 但

  • 我使用dropwizard制作了一个非常传统的文件上传方法。 所以我在资源中有一个这样的方法 里面没有什么特别的,它只是保存到一个路径,使用java.nio库,就像这样 它只是不会上传excel文件。我在其他地方读到excel文件和它们的底层类型受到怀疑。请问我需要做什么?

  • 本文向大家介绍php上传文件问题汇总,包括了php上传文件问题汇总的使用技巧和注意事项,需要的朋友参考一下 1.先做个最简单的上传文件 2.然后了解超级全局变量$_FILES的值 其中,$_FILES['userfile']['error']的所有值: UPLOAD_ERR_OK 其值为 0,没有错误发生,文件上传成功。 UPLOAD_ERR_INI_SIZE 其值为 1,上传的文件超过了 php

  • 问题内容: 我正在尝试一个需要Facebook用户提供一些信息的网站,正在使用PHP和JS SDK。 我在PHP中有一个功能: 在一个类中,该类包含来自SDK的facebook对象。 然后在一个块上,我这样做: FB JS环境已正确设置(我认为),因此可以正常工作。因此,用户会弹出窗口并授权该站点。 问题是即使用户授权了该应用程序之后,$ user也始终为0,这意味着始终返回0,然后列出用户(包括

  • 本文向大家介绍php上传文件常见问题总结,包括了php上传文件常见问题总结的使用技巧和注意事项,需要的朋友参考一下 把php上传文件时经常碰到的几个问题总结一下吧,以后用到时不用再去找了。 1.先做个最简单的上传文件 2.然后了解超级全局变量$_FILES的值 其中,$_FILES['userfile']['error']的所有值: UPLOAD_ERR_OK 其值为 0,没有错误发生,文件上传成