move_uploaded_file()只上传小文件

时间:2017-08-16 13:10:09

标签: php file-upload

我想在门户网站上实现小文件上传。我在PHP.net上找到了这个解决方案:

<form action='action.php' method='post' enctype="multipart/form-data">
    <!-- MAX_FILE_SIZE must precede the file input field -->
    <input type="hidden" name="MAX_FILE_SIZE" value="30000" />
    <!-- Name of input element determines name in $_FILES array -->
    Send this file: 
    <input name="userfile" type="file"/>
    <!-- hidden input fields to sent variables to action.ph -->
    <innput type="hidden" name='casenumber' id="caseForFileUpload" />
    <input type="hidden" name='key' id="keyForFileUpload" />
    <input type="submit" value="Send File" name="uploadfiles"/>
</form>

这是action.php

的相关部分
if(isset($_POST['uploadfiles'])){
    if(!empty($_FILES)){
        $target_dir = "upload/";
        $target_file = $target_dir.basename($_FILES['userfile']['name']);
        $fileType = pathinfo($target_file,PATHINFO_EXTENSION);

        if($fileType == "pdf"){
            if(move_uploaded_file($_FILES['userfile']['tmp_name'], $target_file)){
                echo "<br><br>File uploaded";
            }else{
                echo "<br><br>File could not be uploaded";
            }
        }
    }
}

这适用于小文件<150KB,但对于大于此的文件则失败,我不知道为什么会发生这种情况。

来自php.ini的相关信息:

upload_max_filesize = 20M
post_max_size = 20M
max_execution_time = 30
max_input_time = 60

所以它确实适用于大于150KB的文件。 PHP日志中没有消息,并且没有使用可能覆盖这些设置的.htaccess

我还能在哪里查看此行为或我如何实现文件上传以允许最大2MB的文件大小?

PS:还请注意,服务器仍在使用PHP 5.2.17运行,并且我无法将其更新为更新的版本。

1 个答案:

答案 0 :(得分:1)

根据OP的要求:

name="MAX_FILE_SIZE" value="30000"

那是30,000字节。根据手册http://php.net/manual/en/features.file-upload.post-method.php

  

“MAX_FILE_SIZE隐藏字段(以字节为单位)”

删除该输入或增加输入。