2012-10-12 65 views
0

我有一個窗體,插入一些值使用AJAX,現在 我想添加一個圖像,但我不能得到圖像 只是使用超全球$ _FILE ['file_name']在 PHP代碼中,導致與PHP通訊的是AJAX。 所以我想知道如果我可以使用文件的路徑從PHP 加載文件,事實上,我可以簡單地通過它在JS/AJAX中傳遞它 。從PHP使用文件路徑插入文件到SQL數據庫

,或者它是允許我把整個文件從JS/AJAX 二進制代碼的方法,然後將它傳遞給PHP 和finallu把它放在SQL數據庫的BLOB?

詩:很明顯,我必須使用AJAX

+0

這很難做,也很複雜。 – kalpaitch

回答

0

如果文件服務器上已經存在,我認爲這將是最好只傳遞文件路徑通過AJAX到PHP和使用PHP的file_get_contents函數讀取它英寸

如果該文件不存在於服務器上,則最好提交表單。在服務器上執行的PHP不能獲取文件路徑並從客戶端獲取文件。

如果你可以使用jQuery,您可以使用HTML表單,捕捉提交事件,serialize形式到一個變量,通過AJAX傳遞,並返回false,防止表單的提交(導致頁面重新加載)。


編輯

關於第二個想法,serialize不會是解決方案的一部分。這隻會讓你獲得文件輸入的價值,而不是文件的內容。要獲得內容會更乏味。不過,它看起來像W3C正在開發something

可能最好只使用標準的HTML表單。

0

目前AJAX不允許你上傳文件。

你只需要使用傳統的方法。

但是,Firefox和Chrome有點可能。但是這種方法在IE中不起作用,而且相當複雜。

編輯

能否考慮讓JavaScript來利用這個https://developer.mozilla.org/en-US/docs/DOM/FileReader,連載,並張貼通過POST使用AJAX。位錯綜複雜。 FileReader適用於Chrome和最新版本的Firefox。我認爲它也適用於Safari和Opera(但不是100%肯定)。可能不適合IE。

但是,讓所有的瀏覽器都可以正常工作,這會有點複雜。

0

我沒有任何關於通過AJAX上傳文件的專業知識。但是,如果您需要將文件作爲BLOB插入到數據庫中,我可以提供一些幫助。

使用PDO,這相當簡單。他們有一個頁面致力於關於LOBs的詳細信息。

$stmt = $db->prepare("INSERT INTO table (image) values (?)"); 

$fp = fopen($_FILES['file']['tmp_name'], 'rb'); 

$stmt->bindParam(1, $fp, PDO::PARAM_LOB); 

$stmt->execute(); 
相關問題