2012-08-14 68 views
2

一直困擾着網絡,很難找到獲取瀏覽文件的文件路徑的示例。其中一些人認爲由於安全原因,該功能不再適用。任何想法傢伙?我非常需要一個樣本。我已經嘗試了很多次。PHP瀏覽文件,然後得到它的路徑

這是目前我有:

<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 
?> 
+1

我認爲你需要提供一個你正在嘗試做的例子,它不是很清楚。 – 2012-08-14 15:24:52

+0

「瀏覽文件」是什麼意思?該文件在*服務器*還是*客戶端*上?如果文件來自客戶端,那麼您**無法獲取其路徑。 – 2012-08-14 15:25:02

+0

[從瀏覽器獲取上傳文件夾和文件名](http://stackoverflow.com/questions/6660094/get-upload-folder-and-filename-from-browser)(和[很多很多人](http ://stackoverflow.com/search?q = fakepath + get + real + path + of + file + on + client)) – Quentin 2012-08-14 15:25:15

回答

0

你不能得到安全文件的完整路徑原因。 W3CRFC規範做而不是提到完整的文件路徑應該可用。你只能得到文件名(例如document.getElementById("filefield_id").value返回名稱)。

原因可能是,如果有人能夠獲取/更改文件路徑,還可以繞過通過隱藏字段從用戶處竊取文件。底線:這是不可能的。如果你告訴我們你正在正好試圖做什麼,也許我們可以有更多的幫助。

+0

我不需要文件名haays – electricfeel1979 2012-08-14 15:57:14

+0

@ mrpotatohead1251是的,除了文件名之外你什麼也得不到 - 文件路徑只是由瀏覽器**不可用**。抱歉。 – Chris 2012-08-14 15:59:05

+0

好吧,我猜。那麼我有什麼選擇?我用它的函數做的類真的需要該文件是特定的zip文件。我可以上傳它嗎? – electricfeel1979 2012-08-14 16:04:01