【问题标题】:PHP Uploaded Files Retrieving ErrorPHP上传的文件检索错误
【发布时间】:2016-08-05 18:47:04
【问题描述】:

我正在构建一个简单的上传系统,下面我有上传系统部分的代码和清单。所以,我的目录列出了所有上传的文件,但是当用户点击下载按钮时它不起作用,再加上显示大小的代码显示为 0 但文件确实被上传了。

我发现如果文件上传到我的根目录,它是完全正常的。当我将目录更改为根目录时,文件确实会显示出来,并且大小和下载部分都可以正常工作。

上传系统代码

 if(isset($_FILES['image'])){
  $errors= array();
  $file_name = $_FILES['image']['name'];
  $file_size =$_FILES['image']['size'];
  $file_tmp =$_FILES['image']['tmp_name'];
  $file_type=$_FILES['image']['type'];
  $file_ext=strtolower(end(explode('.',$_FILES['image']['name'])));


  $extensions= array("jpeg","jpg","png", "gif");

  if(in_array($file_ext,$extensions)=== false){
     $errors[]="extension not allowed, please choose a JPEG, PNG, or GIF file.";
  }

  if(empty($errors)==true){
      move_uploaded_file($file_tmp, "dir/.$file_name");
  }else{
     print_r($errors);
  }

}

检索上传的文件代码:

     $resource = opendir("dir/.");

        while (($entry = readdir($resource)) != false) {
        $download = '<a href="' . $entry . '"> Download </a> ';

        if ($entry != '.' && $entry != '..') {
            echo "<tr> <td>" . $entry . "</td> <td>" . formatSizeUnits(filesize($entry)) . "</td> <td> $download </td></tr>";   
        }
    }

【问题讨论】:

  • 你检查权限了吗?
  • 您也可以从 move_uploaded_file($file_tmp, "dir/.$file_name") 中删除点并使用:move_uploaded_file($file_tmp, "dir/$file_name")。检查它是否有效。

标签: php html web file-upload development-environment


【解决方案1】:

readdir() 不返回它找到的文件的完整路径,实际上只返回它们的名称。由于您打开了dir/ 作为源目录,因此您得到的是somefile.txt,而不是dir/somefile.txt,这意味着您的文件大小失败,因为它正在查找错误的文件。那不是0 bytes,它是一个布尔值 FALSE 被强制转换为整数 0。

【讨论】:

    猜你喜欢
    • 2015-10-30
    • 2014-05-24
    • 2012-06-18
    • 2010-09-05
    • 2012-05-04
    • 1970-01-01
    • 2014-08-17
    相关资源
    最近更新 更多