2013-05-06 188 views
1

我想創建一個表單,用戶可以將XML文件上傳到我的服務器,它將覆蓋已存在的服務器。我正在使用下面的代碼(如果它已經存在,我知道它不會上傳文件,但是一旦我解決了這個問題,我會解決這個問題)。通過PHP無法上傳.xml文件

的問題是,第一if語句本聲明

($_FILES["file"]["type"] == "application/xml") 

這意味着我得到一個無效的文件信息失敗。如果我評論說,文件上傳。

更改允許其他類型(如JPG)的文件類型的作品。

<?php 
$allowedExts = array("xml"); 
$extension = end(explode(".", $_FILES["file"]["name"])); 
if ((($_FILES["file"]["type"] == "application/xml")) 
&& ($_FILES["file"]["size"] < 5000000) 
&& in_array($extension, $allowedExts)) 
    { 
    if ($_FILES["file"]["error"] > 0) 
    { 
    echo "Return Code: " . $_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 "Temp file: " . $_FILES["file"]["tmp_name"] . "<br>"; 

    if (file_exists("xml/" . $_FILES["file"]["name"])) 
     { 
     echo $_FILES["file"]["name"] . " already exists. "; 
     } 
    else 
     { 
     move_uploaded_file($_FILES["file"]["tmp_name"], 
     "xml/" . $_FILES["file"]["name"]); 
     echo "Stored in: " . "xml/" . $_FILES["file"]["name"]; 
     } 
    } 
    } 
else 
    { 
    echo "Invalid file"; 
    } 
?> 

我對PHP很陌生,所以要溫柔一些,我找過類似的問題,但沒有找到任何似乎解決這個問題的東西。

謝謝。

+0

工作查看哪些值你所得到的'$ _FILES'變量通過使用'print_r',然後用比較你的'如果condition'其是否匹配與否。 – Sid 2013-05-06 11:42:59

+0

謝謝,使用print_r顯示它顯示爲xml。已經改變了代碼來檢查整個文件名稱與我想要的一樣,並且工作。我知道的不是非常安全,但是對於我正在執行的內容來說,這很好。再次感謝。 – user2354318 2013-05-06 16:31:19

回答

0

從PHP網站:

$ _FILES [ 'userfile的'] [ '型']

The mime type of the file, if the browser provided this information. An example would be "image/gif". This mime type is however not checked on the PHP side and therefore don't take its value for granted. 

「如果瀏覽器提供此信息的。」一些瀏覽器不發送類型。您需要通過擴展或解析XML來驗證。

選中此項。

0

得到它與

($_FILES["file"]["type"] == "text/xml") 
+0

你必須在這裏解釋你在做什麼。答案不是一行代碼......'app .../xml'和'text/xml'之間有什麼區別?提供參考。 – 2015-02-19 00:44:31