2011-07-30 82 views
0

好的,所以我在.html頁面和.php頁面上創建了一個表單,用於上傳圖像,然後將表單中的som數據與圖像的文件路徑一起保存。問題是,當我從根文件夾移動到根/ backweb它不會工作。我在backweb文件夾中創建了一個新的上傳文件夾,並且爲簡單起見,還將conn.inc.php文件複製到了backweb文件夾中。PHP在一個文件夾中工作,但沒有在另一個文件夾中工作

當我從根文件中運行它時,它會顯示「釋放sparades!」 (釋放保存),但是當我從後臺服務器運行它時,它會顯示「Ogiltig filtyp!...」(無效的文件類型)。有任何想法嗎?

下面的代碼:

<? 
require_once 'conn.inc.php'; 

if (($_FILES["cover"]["type"] == "image/gif") 
|| ($_FILES["cover"]["type"] == "image/png") 
|| ($_FILES["cover"]["type"] == "image/jpeg") 
|| ($_FILES["cover"]["type"] == "image/pjpeg")) 
    { 
    if ($_FILES["cover"]["error"] > 0) 
    { 
    echo "Return Code: " . $_FILES["cover"]["error"] . "<br />"; 
    } 
    else 
    { 

    if (file_exists("uploads/" . $_FILES["cover"]["name"])) 
     { 
     echo $_FILES["cover"]["name"] . " finns redan på servern. "; 
     } 
    else 
     { 
     move_uploaded_file($_FILES["cover"]["tmp_name"], 
     "uploads/" . $_FILES["cover"]["name"]); 
     $cover = "uploads/" . $_FILES["cover"]["name"]; 
     } 
    } 
    } 
else 
    { 
    echo "Ogiltig filtyp! Endast bilder &auml;r till&aring;tna (.jpg, .png och .gif)</br> 
    <a href=\"uploadform.html\">F&ouml;rs&ouml;k igen</a>"; 
    } 


$band = $_REQUEST["band"]; 
$title = $_REQUEST["title"]; 
$catnum = $_REQUEST["catnum"]; 
$format = $_REQUEST["format"]; 

$query = "INSERT INTO releases (band,title,catnum,format,cover) VALUES ('$band','$title','$catnum','$format','$cover')"; 

$result = mysql_query($query); 
    if ($result == NULL) 
    { 
     echo "N&aring;got gick fel, releasen sparades ej!"; 
     ?> 
     <br/> 
     <br/> 
     <a href="editreleases.php">Försök igen!</a> 
     <? 
    } 
    else 
    { 
     echo "Releasen sparades!"; 
    } 
?> 
+0

它說它是什麼文件類型,當它被認爲是無效的? – Svish

+0

多數民衆贊成在奇怪的事情,我上傳相同的文件,當我在根和在backweb文件夾中測試它。它不會說文件類型。 – Alex

回答

0

聽起來像文件夾權限設置爲PHP訪問文件的非根文件夾

+0

如果我使用相同的文件夾,您認爲它會起作用嗎?好吧,那麼這樣做的正確方法是什麼? 是否這樣? if(file_exists(「../ uploads /」。$ _FILES [「cover」] [「name」])) – Alex

+0

我想你是對的!我編輯了代碼來使用其他文件夾和其他conn.inc.php,它神奇地開始工作! – Alex

+1

這實際上不是我的意思,但如果它工作 - 太棒了!我想到的應用「c​​hmod 777」(或者如果你在Windows上給每個人讀取權限)到文件夾,看看它是否有任何區別。 – trailmax

1

你必須給正確的路徑到您的目錄,即

if (file_exists("../uploads/" . $_FILES["cover"]["name"])) 

VS

if (file_exists("uploads/" . $_FILES["cover"]["name"])) 
+0

正如我以前寫的,爲了簡單起見,我在backweb文件夾中創建了一個新的上傳文件夾。相同的代碼仍然不會工作!有些事情在第一條if語句中出錯。 – Alex

+0

'require_once'../ conn.inc.php';'? –

+0

正如我寫的那樣,抄襲了那個!在此之前,該頁面是空白的。我收到錯誤消息後。 – Alex

0

也許你應該使用is_uploaded_file而不是file_exists?並使用$_FILES["cover"]["tmp_name"]作爲文件的路徑。從PHP手冊舉例:

if (is_uploaded_file($_FILES['userfile']['tmp_name'])) 
{ 
    echo "File ". $_FILES['userfile']['name'] ." uploaded successfully.\n"; 
    echo "Displaying contents\n"; 
    readfile($_FILES['userfile']['tmp_name']); 
} 
else 
{ 
    echo "Possible file upload attack: "; 
    echo "filename '". $_FILES['userfile']['tmp_name'] . "'."; 
} 

此外,@trailmax筆記,檢查PHP實際上可以訪問文件上傳到該文件夾​​。

+0

你真的認爲我必須對代碼進行這麼大的改動,因爲我將它從根目錄移動到根目錄/ backweb? – Alex

+0

可能不是,但例如:爲什麼你甚至想要手動創建文件路徑,當你應該在tmp_name中擁有它時?無論哪種方式,似乎你的問題是錯誤的配置:) – Svish

相關問題