Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-文件上传吐出错误_Php_File_File Upload_Upload - Fatal编程技术网

PHP-文件上传吐出错误

PHP-文件上传吐出错误,php,file,file-upload,upload,Php,File,File Upload,Upload,我在做一个简单的文件上传练习,我从我的WebDev类中得到了这个练习——我们实际上只需要复制代码并将其集成以满足我们的需要。 我试着为我的项目这样做,不幸的是,它会继续重复同样的错误 <?php $allowed_filetypes = array('.jpg','.gif','.bmp','.png', '.jpeg'); $max_filesize = 524288; $upload_path = 'uploads/'; $filename = $_FILES['userfi

我在做一个简单的文件上传练习,我从我的WebDev类中得到了这个练习——我们实际上只需要复制代码并将其集成以满足我们的需要。 我试着为我的项目这样做,不幸的是,它会继续重复同样的错误

<?php

$allowed_filetypes = array('.jpg','.gif','.bmp','.png', '.jpeg'); 
$max_filesize = 524288; 
$upload_path = 'uploads/'; 

$filename = $_FILES['userfile']['name']; 
$ext = substr($filename, strpos($filename,'.'), strlen($filename)-1); 
var_export($_FILES, $ext);

 if(!in_array($ext,$allowed_filetypes))
  die('The file you attempted to upload is not allowed.');


 if(filesize($_FILES['usrfile']['tmp_name']) > $max_filesize)
  die('The file you attempted to upload is too large.');


 if(!is_writable($upload_path))
  die('You cannot upload to the specified directory, please CHMOD it to 777.');


 if(move_uploaded_file($_FILES['usrfile']['tmp_name'],$upload_path . $filename))
     echo 'Your file upload was successful, view the file <a href="' . $upload_path .  $filename . '" title="Your File">here</a>';
  else
     echo 'There was an error during the file upload.  Please try again.';

?>

它不断给我“错误的文件类型”错误,数组中定义了所有类型

<form id='upload' action="uploadfile.php" method="POST" enctype="multipart/form-data">
    <table>
        <tr>
            <td >Choose a File to Upload</td> 
        </tr>
        <tr>
            <td >Select File</td>
            <td  ><input type="file"  name="userfile"></td>
        </tr>
        <tr>
            <td colspan=2 id="sub"><input type="submit" name="submit" value="submit" ></td>
        </tr>
    </Table>
</form>

选择要上载的文件
选择文件

索引“tmp\u name”包含一个临时文件名,而不是该文件真正拥有的名称。它存储在
'name'
中。有关信息,请参阅

此外,您应该:

  • 检查
    'error'
    索引中的错误
  • 用于获取扩展名
  • 在搜索数组之前将其小写
  • 为上传的文件名添加一些随机性,以避免覆盖现有文件

  • $filename=$_文件['usrfile']['name']

    您可以使用它,因为首先必须始终回显$\u文件数组,然后开始调试。 将此行从

    $allowed_filetypes = array('.jpg','.gif','.bmp','.png', '.jpeg'); 
    

    更改下面的行

    if(filesize($_FILES['usrfile']['tmp_name']) > $max_filesize)  
    

    然后拆下线路

    $ext = substr($filename, strpos($filename,'.'), strlen($filename)-1); 
    
    换一条线

    if(!in_array($ext,$allowed_filetypes))  
    


    首先对文件类型进行回显。遗憾的是,将其更改为“名称”没有帮助,仍然会显示文件不允许的错误==>如果您应该
    var\u导出($\u FILES,$ext),请首先查看回显
    就在第一个if之前,并在你的问题中发布它(以及你现在使用的更新代码)。@Quantaqa:
    var_export
    是一个调试工具,而不是一个神奇的修复程序-我的想法是看看它为你打印了什么值。您可以将它输出的内容发布到页面吗?很抱歉,我不熟悉var_export()==>Output:array(),您尝试上载的文件是不允许的。如果它生成空数组,则表示您的
    $\u文件是空的。您提交的HTML表单是什么样子的?它是否具有
    enctype=“multipart/form data”
    属性?
    $ext = substr($filename, strpos($filename,'.'), strlen($filename)-1); 
    
    if(!in_array($ext,$allowed_filetypes))  
    
    if(!in_array($_FILES['usrfile']['type'],$allowed_filetypes))