警告:filemtime():stat失败

时间:2014-05-23 14:06:52

标签: php html

我在尝试将文件上传到网络服务器时遇到错误。它们被正常上传,当我从文件中提取细节时,它会抛出错误。此外,当点击上传的文件时,它会显示错误的路径'./filename.jpg'而非'uploads/filename.jpg'上传文件夹为/uploads/

我相信它正在处理文件的真实路径,但我不确定如何修复它。

这是我正在使用的代码示例。

<form enctype="multipart/form-data" action="./.upload_file.php" method="post">
    <input type="hidden" name="MAX_FILE_SIZE" value="1000000" />
    Choose a file to upload: <input name="uploaded_file" type="file" />
    <input type="submit" value="Upload" />
  </form> 

    <table class="sortable">
        <thead>
        <tr>
            <th>Filename</th>
            <th>Type</th>
            <th>Size</th>
            <th>Date Modified</th>
            <th>Delete File?</th>
        </tr>
        </thead>
        <tbody>
        <?php


    // Adds pretty filesizes
    function pretty_filesize($file) {
        $size=filesize($file);
        if($size<1024){$size=$size." Bytes";}
        elseif(($size<1048576)&&($size>1023)){$size=round($size/1024, 1)." KB";}
        elseif(($size<1073741824)&&($size>1048575)){$size=round($size/1048576, 1)." MB";}
        else{$size=round($size/1073741824, 1)." GB";}
        return $size;
    }



    // Checks to see if veiwing hidden files is enabled
    if($_SERVER['QUERY_STRING']=="hidden")
    {$hide="";
     $ahref="./";
     $atext="Hide";}
    else
    {$hide=".";
     $ahref="./?hidden";
     $atext="Show";}



     // Opens directory
     $path = "./uploads/";
     $myDirectory=opendir("$path");
     echo $myDirectory .'My directory';
     echo '<br/>'.$path;

    // Gets each entry
    while($entryName=readdir($myDirectory)) {
       $dirArray[]=$entryName;
    }

    // Closes directory
    closedir($myDirectory);

    // Counts elements in array
    $indexCount=count($dirArray);

    // Sorts files
    sort($dirArray);

    // Loops through the array of files
    for($index=0; $index < $indexCount; $index++) {

    // Decides if hidden files should be displayed, based on query above.
        if(substr("$dirArray[$index]", 0, 1)!=$hide) {

    // Resets Variables
        $favicon="";
        $class="file";

    // Gets File Names
        $name=$dirArray[$index];
        $namehref=$dirArray[$index];

        // Gets Date Modified
        $modtime=date("M j Y g:i A", filemtime($dirArray[$index]));
        $timekey=date("YmdHis", filemtime($dirArray[$index]));


    // Separates directories, and performs operations on those directories
        if(is_dir($dirArray[$index]))
        {
                $extn="&lt;Directory&gt;";
                $size="&lt;Directory&gt;";
                $sizekey="0";
                $class="dir";

            // Gets favicon.ico, and displays it, only if it exists.
                if(file_exists("$namehref/favicon.ico"))
                    {
                        $favicon=" style='background-image:url($namehref/favicon.ico);'";
                        $extn="&lt;Website&gt;";
                    }

            // Cleans up . and .. directories
                if($name=="."){$name=". (Current Directory)"; $extn="&lt;System Dir&gt;"; $favicon=" style='background-image:url($namehref/.favicon.ico);'";}
                if($name==".."){$name=".. (Parent Directory)"; $extn="&lt;System Dir&gt;";}
        }

    // File-only operations
        else{
            // Gets file extension
            $extn=pathinfo($dirArray[$index], PATHINFO_EXTENSION);

            // Prettifies file type
            switch ($extn){
                case "png": $extn="PNG Image"; break;
                case "jpg": $extn="JPEG Image"; break;
                case "jpeg": $extn="JPEG Image"; break;
                case "svg": $extn="SVG Image"; break;
                case "gif": $extn="GIF Image"; break;
                case "ico": $extn="Windows Icon"; break;

                case "txt": $extn="Text File"; break;
                case "log": $extn="Log File"; break;
                case "htm": $extn="HTML File"; break;
                case "html": $extn="HTML File"; break;
                case "xhtml": $extn="HTML File"; break;
                case "shtml": $extn="HTML File"; break;
                case "php": $extn="PHP Script"; break;
                case "js": $extn="Javascript File"; break;
                case "css": $extn="Stylesheet"; break;

                case "pdf": $extn="PDF Document"; break;
                case "xls": $extn="Spreadsheet"; break;
                case "xlsx": $extn="Spreadsheet"; break;
                case "doc": $extn="Microsoft Word Document"; break;
                case "docx": $extn="Microsoft Word Document"; break;

                case "zip": $extn="ZIP Archive"; break;
                case "htaccess": $extn="Apache Config File"; break;
                case "exe": $extn="Windows Executable"; break;

                default: if($extn!=""){$extn=strtoupper($extn)." File";} else{$extn="Unknown";} break;
            }

            // Gets and cleans up file size
                $size=pretty_filesize($dirArray[$index]);
                $sizekey=filesize($dirArray[$index]);
        }

    // Output
     echo("
        <tr class='$class'>
            <td><a href='./$namehref'$favicon class='name'>$name</a></td>
            <td><a href='./$namehref'>$extn</a></td>
            <td sorttable_customkey='$sizekey'><a href='./$namehref'>$size</a></td>
            <td sorttable_customkey='$timekey'><a href='./$namehref'>$modtime</a></td>
        </tr>");
       }
    }
    ?>

        </tbody>
    </table>

1 个答案:

答案 0 :(得分:1)

尝试使用此功能。 dirArray的路径没有通过。需要将$ path附加到arraypath

<form enctype="multipart/form-data" action="./.upload_file.php" method="post">
                <input type="hidden" name="MAX_FILE_SIZE" value="1000000" />
                Choose a file to upload: <input name="uploaded_file" type="file" />
                <input type="submit" value="Upload" />
              </form> 

                <table class="sortable">
                    <thead>
                    <tr>
                        <th>Filename</th>
                        <th>Type</th>
                        <th>Size</th>
                        <th>Date Modified</th>
                        <th>Delete File?</th>
                    </tr>
                    </thead>
                    <tbody>
                    <?php


                // Adds pretty filesizes
                function pretty_filesize($file) {
                    $size = filesize($file);
                    if($size < 1024){$size = $size." Bytes";}
                    elseif(($size<1048576)&&($size>1023)){$size=round($size/1024, 1)." KB";}
                    elseif(($size<1073741824)&&($size>1048575)){$size=round($size/1048576, 1)." MB";}
                    else{$size=round($size/1073741824, 1)." GB";}
                    return $size;
                }



                // Checks to see if veiwing hidden files is enabled
                if($_SERVER['QUERY_STRING']=="hidden")
                {$hide="";
                 $ahref="./";
                 $atext="Hide";}
                else
                {$hide=".";
                 $ahref="./?hidden";
                 $atext="Show";}



                 // Opens directory
                 $path = "./uploads/";
                 //$myDirectory=opendir("$path");
                 $myDirectory=opendir('./uploads/');

                // Gets each entry
                while($entryName=readdir($myDirectory)) {
                   $dirArray[]=$entryName;
                }
                //var_dump($dirArray);
                // Closes directory
                closedir($myDirectory);

                // Counts elements in array
                $indexCount=count($dirArray);


                // Sorts files
                sort($dirArray);

                // Loops through the array of files
                for($index=0; $index < $indexCount; $index++) {


                // Decides if hidden files should be displayed, based on query above.
                    if(substr("$dirArray[$index]", 0, 1)!=$hide) {

                // Resets Variables
                    $favicon="";
                    $class="file";

                // Gets File Names
                    $name = $path.$dirArray[$index];
                    $namehref = $path.$dirArray[$index];

                    // Gets Date Modified
                    $modtime=date("M j Y g:i A", filemtime($path.$dirArray[$index]));
                    $timekey=date("YmdHis", filemtime($path.$dirArray[$index]));


                // Separates directories, and performs operations on those directories
                    if(is_dir($dirArray[$index]))
                    {
                            $extn="&lt;Directory&gt;";
                            $size="&lt;Directory&gt;";
                            $sizekey="0";
                            $class="dir";

                        // Gets favicon.ico, and displays it, only if it exists.
                            if(file_exists("$namehref/favicon.ico"))
                                {
                                    $favicon=" style='background-image:url($namehref/favicon.ico);'";
                                    $extn="&lt;Website&gt;";
                                }

                        // Cleans up . and .. directories
                            if($name=="."){$name=". (Current Directory)"; $extn="&lt;System Dir&gt;"; $favicon=" style='background-image:url($namehref/.favicon.ico);'";}
                            if($name==".."){$name=".. (Parent Directory)"; $extn="&lt;System Dir&gt;";}
                    }

                // File-only operations
                    else{
                        // Gets file extension
                        $extn=pathinfo($dirArray[$index], PATHINFO_EXTENSION);

                        // Prettifies file type
                        switch ($extn){
                            case "png": $extn="PNG Image"; break;
                            case "jpg": $extn="JPEG Image"; break;
                            case "jpeg": $extn="JPEG Image"; break;
                            case "svg": $extn="SVG Image"; break;
                            case "gif": $extn="GIF Image"; break;
                            case "ico": $extn="Windows Icon"; break;

                            case "txt": $extn="Text File"; break;
                            case "log": $extn="Log File"; break;
                            case "htm": $extn="HTML File"; break;
                            case "html": $extn="HTML File"; break;
                            case "xhtml": $extn="HTML File"; break;
                            case "shtml": $extn="HTML File"; break;
                            case "php": $extn="PHP Script"; break;
                            case "js": $extn="Javascript File"; break;
                            case "css": $extn="Stylesheet"; break;

                            case "pdf": $extn="PDF Document"; break;
                            case "xls": $extn="Spreadsheet"; break;
                            case "xlsx": $extn="Spreadsheet"; break;
                            case "doc": $extn="Microsoft Word Document"; break;
                            case "docx": $extn="Microsoft Word Document"; break;

                            case "zip": $extn="ZIP Archive"; break;
                            case "htaccess": $extn="Apache Config File"; break;
                            case "exe": $extn="Windows Executable"; break;

                            default: if($extn!=""){$extn=strtoupper($extn)." File";} else{$extn="Unknown";} break;
                        }

                        // Gets and cleans up file size
                            $size=pretty_filesize($path.$dirArray[$index]);
                            $sizekey=filesize($path.$dirArray[$index]);
                    }
                    $varlocation = $name;
                    //echo 'is the table being displayed?';
                // Output
                 echo("
                    <tr class='$class'>
                        <td><a href='./$namehref'$favicon class='name'>$name</a></td>
                        <td><a href='./$namehref'>$extn</a></td>
                        <td sorttable_customkey='$sizekey'><a href='./$namehref'>$size</a></td>
                        <td sorttable_customkey='$timekey'><a href='./$namehref'>$modtime</a></td>
                        <td><i class='fa fa-trash-o'></i>".$varlocation." </td>
                    </tr>");
                   }
                }
                ?>

                    </tbody>
    </table>