2013-07-05 73 views
0

我有一個php頁面(名爲add_ship.php),用一個表單填充數據庫,包括文件上傳。這通過一個單獨的文件upload.php(如下所示)工作。使用upload.php進行文件上傳後更新表單。

我無法工作的是當一個文件上傳成功時,我創建了一個鏈接返回到add_ship.php,圖像的名稱作爲參數...我怎麼得到這個參數填寫表單中的正確字段,而且如果用戶已經輸入了幾個字段,那麼選擇上傳圖像,當然所有其餘的數據都會丟失 - 是否有辦法不會丟失輸入的內容因此,最好重新調整到add_ship.php,只是添加文件名到正確的領域?)

非常感謝

<?php 
$allowedExts = array("gif", "jpeg", "jpg", "png"); 
$temp = explode(".", $_FILES["file"]["name"]); 
$extension = end($temp); 
if ((($_FILES["file"]["type"] == "image/jpeg") 
|| ($_FILES["file"]["type"] == "image/jpg") 
|| ($_FILES["file"]["type"] == "image/png")) 
&& in_array($extension, $allowedExts)) 
    { 
    if ($_FILES["file"]["error"] > 0) 
    { 
    echo "Return Code: " . $_FILES["file"]["error"] . "<br>"; 
    } 
    else 
    { 
    echo "Image succsefuly uploaded. " . "<br>" . "<br>"; 
    ?> 
    <a href="add_ship.php?file_name= <?php echo $_FILES["file"]["name"] ?>">Click Hereto return to Add Ship page</a> 
<?php 


    if (file_exists("upload/" . $_FILES["file"]["name"])) 
     { 
     echo $_FILES["file"]["name"] . " already exists. "; 
     } 
    else 
     { 
     move_uploaded_file($_FILES["file"]["tmp_name"], 
     "../images/ships/" . $_FILES["file"]["name"]); 

     } 
    } 
    } 
else 
    { 
    echo "Invalid file"; 
    } 
?> 

回答

0

你的直覺是正確的,通過導航到一個單獨的頁面來執行文件上傳,您將失去未保存的表單數據。有很多方法可以解決這個問題:

1)不要使用單獨的頁面。在add_ship.php中處理文件上傳。基本上你只需將upload.php中的代碼移動到add_ship.php。上傳完成後,處理其餘的表單數據。

2)把你的上傳表單放到一個對話框中(例如使用jquery .dialog()),並異步上傳文件(例如使用jquery .ajax())。

你可以想出在兩個單獨頁面之間來回傳遞表單數據的方法,但它們都非常繁瑣而且容易出錯。

關於原來的問題,有很多事情可能會出錯。首先想到的是文件名中的特殊字符。

+0

謝謝內森,我想我會看看這些建議,看看我得到多遠。最佳x – user2406993

相關問題