Php 浏览文件,然后获取其路径


Php Browse a file then get its path

一直在网络上磕磕绊绊,很难找到获取浏览文件的文件路径的样本。其中一些我读到由于安全原因,此功能不再起作用。伙计们有什么想法吗?我非常需要一个样本。我已经尝试了很多次了。

这是我目前有:

<html>
<body>

<form method="post" action="file.php" enctype="multipart/form-data">
<input type="radio" name="type" value="moodle" required="required" /> Moodle<br />
<input type="radio" name="type" value="bb" required="required" /> BlackBoard<br />
<input type="file" name="file" id="file" /><br /><br />
<input type="submit" value="Submit" name="submit" />
</form> 
</body>
</html>

该文件.php

<?php

$filetype = $_POST["type"];


echo $filetype;
echo "Upload: " . $_FILES['file']['name'] . "<br />";
echo "Type: " . $_FILES['file']['tmp_name'];
if ($_FILES['file']['error'] > 0)
  {
  echo "Error: " . $_FILES["file"]["error"] . "<br />";
  }
else
  {
  echo "Upload: " . $_FILES['file']['name'] . "<br />";
  echo "Type: " . $_FILES['file']['type'] . "<br />";
  echo "Size: " . ($_FILES['file']['size'] / 1024) . " Kb<br />";
  echo "Stored in: " . $_FILES['file']['tmp_name'];
  }

function moodlezip($zipfile){
    echo "<h1>MOODLE</h1>"."<br />";
    $moodle = new Moodle();
    $zip = zip_open($zipfile);
    $ziparc = new ZipArchive;

    if ($zip)
    {
        while ($zip_entry = zip_read($zip))
        {
            $file = zip_entry_name($zip_entry);
            //echo "Name: " . $file . "<br />";

            if (strpos($file,'course.xml') !== false) {
                if ($ziparc->open($zipfile) === TRUE) {
                    $coursexml =  new SimpleXMLElement($ziparc->getFromName($file));
                    $moodle->getCourse($coursexml);
                    $ziparc->close();

                } else {
                    echo 'failed';
                }

            }
            else if (strpos($file,'forum.xml') !== false) {
                if ($ziparc->open($zipfile) === TRUE) {
                    $topicxml =  new SimpleXMLElement($ziparc->getFromName($file));
                    $moodle->getTopic($topicxml);
                    $ziparc->close();

                } else {
                    echo 'failed';
                }

            }

            else if (strpos($file,'lesson.xml') !== false) {
                if ($ziparc->open($zipfile) === TRUE) {
                    $lessonxml =  new SimpleXMLElement($ziparc->getFromName($file));
                    $moodle->getLessons($lessonxml);
                    $ziparc->close();

                } else {
                    echo 'failed';
                }

            }

            else if (strpos($file,'quiz.xml') !== false) {
                if ($ziparc->open($zipfile) === TRUE) {
                    $quizxml =  new SimpleXMLElement($ziparc->getFromName($file));
                    $moodle->getQuizzes($quizxml);
                    $ziparc->close();

                } else {
                    echo 'failed';
                }

            }

            else if (strpos($file,'questions.xml') !== false) {
                if ($ziparc->open($zipfile) === TRUE) {
                    $questionsxml =  new SimpleXMLElement($ziparc->getFromName($file));
                    $moodle->getQuestions($questionsxml);
                    $ziparc->close();

                } else {
                    echo 'failed';
                }

            }

        }
        zip_close($zip);
    }
}
require_once 'classes/backup.php';
$connect = mysql_connect("localhost","root","");

if (!$connect)
{
    die('Could not connect: ' . mysql_error());
}
mysql_close($connect);

//form upload loop folders input submit, find, bb, scorm
//class admin
?>

使用 pathinfo() http://php.net/manual/en/function.pathinfo.php

出于安全原因,您无法获取文件的完整路径。W3C 和 RFC 规范没有提到完整的文件路径应该可用。您只能获取文件名(例如document.getElementById("filefield_id").value返回名称)。

原因可能是,如果一个人有能力获取/更改文件路径,那么也可以通过隐藏字段从用户那里窃取文件。底线:这是不可能的。如果您告诉我们您到底想做什么,也许我们会提供更多帮助。