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

时间:2012-08-14 15:22:07

标签: php html file 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>

file.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
?>

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

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

原因可能是,如果有人能够获取/更改文件路径,那么人们也可以通过隐藏字段来窃取用户的文件。底线:这是不可能的。如果你告诉我们你正是试图做什么,也许我们可以提供更多帮助。