代码之家  ›  专栏  ›  技术社区  ›  Chris

php文件上传大于上传最大文件大小和错误

  •  3
  • Chris  · 技术社区  · 14 年前

    如何捕获上载到Web服务器的文件中大于php upload \u max \u文件大小的错误?

    我的问题类似于 so/large-file-upload-errors-with-php 虽然我的内存限制设置为512M,所以问题的解决方案对我没有帮助。

    例如,我尝试上传一个6.9MB的文件,我的上传最大文件大小为6米。我的脚本基本上停止执行,我不知道在哪里或为什么。另外,我打开了错误报告。

    此外,我还应注意,文件<6MB我可以使用以下代码正确上载和处理:

    if(isset($_FILES['file']['name']) and !empty($_FILES['file']['name'])){
    
        $info = pathinfo($_FILES['file']['name']); 
        $ext = $info['extension'];
        //verify file is of allowed types 
        if(Mimetypes::isAllowed($ext)){
            if(filesize($_FILES['file']['tmp_name']) <= AttachmentUploader::$maxFilesize){              
                $a = new AttachmentUploader();      //for file uploading 
                if($a->uploadFile($_FILES['file'], 'incident', $_POST['sys_id'])){
                    header("location: ".$links['status']."?item=incident&action=update&status=1&place=".urlencode($links['record']."id=".$_POST['sys_id']));            
                }else{
                    header("location: ".$links['status']."?item=incident&action=update&status=-1&place=".urlencode($links['record']."id=".$_POST['sys_id']));           
                }
    
            }else{      
                $errors[] = 'The file you attempted to upload is too large.  0.5MB is the maximum allowed size for a file.  If you are trying to upload an image, it may need to be scaled down.';
            }
        }else{
            $errors[] = 'The file you attempted to upload is not allowed.  Acceptable extensions: jpg, gif, bmp, png, xls, doc, docx, txt, pdf';
        }
    }else{
        $errors[] = 'Please attach a file.';
    }
    

    我的php.ini设置:

    ;;;;;;;;;;;;;;;;;;;
    ; Resource Limits ;
    ;;;;;;;;;;;;;;;;;;;
    
    max_execution_time = 7200     ; Maximum execution time of each script, in seconds
    memory_limit = 512M  ; Maximum amount of memory a script may consume (8MB)
    
    
    ;;;;;;;;;;;;;;;;
    ; File Uploads ;
    ;;;;;;;;;;;;;;;;
    
    ; Whether to allow HTTP file uploads.
    file_uploads = On
    
    ; Temporary directory for HTTP uploaded files (will use system default if not
    ; specified).
    upload_tmp_dir = /tmp
    
    ; Maximum allowed size for uploaded files.
    upload_max_filesize = 6M
    
    1 回复  |  直到 14 年前
        1
  •  3
  •   Colin Hebert    14 年前

    错误在 $_FILES['userfile']['error'] . 你只要检查一下这个值 UPLOAD_ERR_INI_SIZE 检测文件是否大于php.ini中定义的最大大小。


    资源: