2012-04-13 45 views
0

用這個卡住了,試過從ajax到w3schools上傳的版本,但沒有去。PHP上傳文件,保存文件的網址到MySQL

我_events.php腳本包含以下來獲取文件信息:

<input name="event_image" type="file" /> 

我_eventscreate.php腳本沒有文件上傳到我的_gallery /目錄的方式,上傳一次我想網址到要保存到我的數據庫的文件(請參閱SQL查詢)。

<?php // Get Event ID 
    $location=$_GET['location']; 

    // Get values from form 
    $event_name=$_POST['event_name']; 
    $event_description=$_POST['event_description']; 
    $event_date=$_POST['event_date']; 
    $event_time=$_POST['event_time']; 
    $event_cost=$_POST['event_cost']; 
    $event_image=$_POST['event_image']; 

    // Connection to MySQL Database. 
    include ('_includes/_dbconnection.php'); 
    include ('_includes/_dbopen.php'); 

    // Update Event using Event ID. 

    $sql="INSERT INTO b_events (ename, edescription, edate, etime, ecost, locationid, eimage)VALUES('$event_name', '$event_description', '$event_date', '$event_time', '$event_cost', '$location', '$event_image')"; 
    $result=mysql_query($sql); 

    if($result){ 
    header('Location: _events.php'); 
    } 

    else { 
    header('Location: _home.php'); 
    } 

?> 

請幫助

+0

你能顯示你的ajax代碼嗎? – 2012-04-13 10:47:31

+0

不確定你在做什麼,你可能需要使用$ _FILES http://php.net/manual/en/reserved.variables.files.php,你粘貼的代碼塊是由ajax處理的嗎? – encodes 2012-04-13 11:04:50

回答

0

通過URL,我會假設你的意思是文件路徑,而不是遠程源位置的本地副本。如果我誤解了這個問題,答案可能是「不要使用文件上傳」。

當你的PHP腳本被執行(除非你做了特別奇怪的事情),這意味着文件上傳已經完成,文件信息(名稱,大小等)被存儲在$ _FILE中。在您能夠存儲或使用其路徑(或者確實將其移動到_gallery)之前,您需要設置該路徑。 上傳後,文件存儲在$ _FILES [fileID] [「tmp_name」]的路徑中。但是你不能直接在這個路徑上操作,例如移動或讀取操作(至少我不能在Apache2中)。

首先,您需要通過PHP的inbuit方法將該文件寫入到您選擇的位置。例如:

move_uploaded_file($_FILES[fileID]["tmp_name"], "_gallery/".$_FILES[fileID]["name"]); 

在該點之後,該文件是你與你想這樣做,它的地址(「_gallery /".$_文件[FILEID] [」名稱「]在上面的例子)是隻是另一個PHP字符串。

如果通過URL表示該文件的外向地址(某人將放入瀏覽器以獲取文件),那麼您需要自己構造它。在最簡單的情況下,該文件位於webroot內,這意味着將相對路徑連接到剛寫入的文件。如果您不想使用硬編碼的基本網址,則$_SERVER中的值可能對您有用。

+0

讓我們看看,我的FORM POST在哪裏我可以選擇我想要使用的圖像你有「」,現在當我提交的腳本被定向到_eventcreate.php事件創建php(相同的域)文件,然後應該開始上傳,保存文件的網址到數據庫。可以用你的代碼來支持它。 – Boldie 2012-04-13 11:22:09

+0

啊我明白了。然後我不確定我能幫上什麼忙。不幸的是我不認爲你可以使用type =「file」輸入來做到這一點;文件上傳將在調用_eventcreate.php時執行。你可能需要在客戶端做一些非常聰明的事情來讓這個工作起作用(我相信這裏有JQuery插件,但就我的知識而言就是這樣)。 – Bhau 2012-04-13 11:25:42

0

您不能使用$ event_image = $ _POST ['event_image'];獲取上傳的文件。

要訪問上傳的文件,你必須使用$ _FILES [$名稱],$ name是名稱:

<input type="file" name="something" /> 

另外,還要確保你的窗體有方法=「郵報」和加密類型=「多部分/格式數據」。

$ _FILES [$名稱]本身將是陣列(關聯數組)中,用鍵:

  • 名稱
  • 類型
  • 大小
  • tmp_name的值
  • 錯誤

文件成功上傳後(使用$ _FILES [$ name] ['error']測試) == UPLOAD_ERR_OK),您需要將其移動到您的首選位置。

文件移動後(通過使用move_uploaded_file()),您可以獲取其名稱,並將值分配給$ event_image。然後將其保存到數據庫。

欲瞭解更多信息,請致電read this