2011-01-14 52 views
3

我使用Uploadify作爲表單的一部分。讓我給你一些背景,這可能會有所幫助。我有一個表單,用戶可以將「項目」添加到網站。首先他們輸入項目名稱和描述。在提交時,這會更新一個名爲「project」的PHP/MySQL數據庫表並給出一個ID。Uploadify JQuery和PHP/MySQL - 更改上傳文件名

用戶可以將文件上傳到服務器上的某個位置。我希望將項目名稱添加到上傳文件名的起始位置,並在上載開始前添加項目ID(我需要添加到數據庫),然後上載完成時將文件詳細信息添加到數據庫表「image」 - 通過項目ID鏈接到「項目」。

我知道我有點反彈,我需要知道如何做到這一點。兩個數據庫表要更新,一個用於表單提交,一個用於文件上傳。我需要將項目名稱和ID傳遞給uploadify上傳腳本。

SOLUTION:

我不得不使用uploadify方法下的項目ID發送到uploadify腳本,此前充滿變數pidmysql_insert_id結果:

'onSelectOnce': function(event,data) { 
    $('#file_upload').uploadifySettings('scriptData', {'pid': pid}); 
} 

然後我可以使用一個簡單的帖子在PHP uploadify腳本中接收pid變量:

$pid = $_POST['pid']; 

就在那時運行選擇此腳本中獲得我所需要的數據庫(項目別名)的數據,並上傳前將其添加到文件名的問題:

$targetPath = $_SERVER['DOCUMENT_ROOT'] . $_REQUEST['folder'] . '/' . $alias . '-'; 
    $targetFile = str_replace('//','/',$targetPath) . $_FILES['Filedata']['name']; 

希望這將有助於在人未來。

回答

3

我不得不使用下面的uploadify方法發送項目ID到up loadify腳本,此前充滿變量PID與mysql_insert_id結果:

'onSelectOnce': function(event,data) { 
    $('#file_upload').uploadifySettings('scriptData', {'pid': pid}); 
} 

然後我可以用一個簡單的職位收到的PHP uploadify腳本的PID變量:

$pid = $_POST['pid']; 

這是當時的事情運行選擇此腳本中獲得我所需要的數據庫(項目別名)的數據,並將其添加到文件名上載前:

$targetPath = $_SERVER['DOCUMENT_ROOT'] . $_REQUEST['folder'] . '/' . $alias . '-'; 
$targetFile = str_replace('//','/',$targetPath) . $_FILES['Filedata']['name']; 

充滿希望這將有助於未來的人們。

1

在uploadify腳本中有一部分給出了上傳表單處理文件的語法。我手邊沒有腳本,但是在完成回調之前以及完整的回撥功能中進行了修飾。

使用before完成並將該名稱追加到ajax請求中,該請求將其保存到數據庫,從那裏只執行2個查詢,上傳圖像的名稱並將user_id設置爲用戶的ID,可能來自於該用戶會話。

var = file_before_upload_name: filename // here use the sytax that Uploadify uses to capture the name of the file 
    var = file_after_upload_name: filename // here use the sytax that Uploadify uses to capture the name of the file 

然後在aftercomplete回調使用Ajax請求,並設置

UID:前UID //從會話 :file_before_upload_name, 後:在阿賈克斯file_after_upload_name

你的查詢會看像

mysql_queries("INSERT INTO `tbl-projects` SET `user_id` = {$_POST['uid']}, `file` = {$_POST['after']}"); 

//another query here to set the data to your other table that relates to tbl-projects 
+0

永遠不要插入`$ _POST`領域中那樣的查詢。你剛剛創建了一個SQL注入漏洞。在所有輸入上更好地使用`mysql_real_escape_string`,或者使用將值「綁定」到SQL字符串的現有數據庫API。 – vdboor 2011-01-14 10:38:46

+0

這是一個如何去做的例子,我敢肯定他知道他應該在更新到數據庫之前清理他的數據= P – Eli 2011-01-14 10:54:10

+0

沒關係,我不打算離開我的網站公開攻擊,這是原則我需要的代碼設置,單個語法很好:) – 2011-01-14 15:51:45