2010-01-25 93 views
1

我試圖添加一個多頁面表單,在PHP與Zend框架,其中用戶可以列出一個項目到我的網站。在第一頁上,他們輸入有關該項目的詳細信息(然後存儲在會話中),第二頁可以上傳圖像,然後第三頁可以確認列表。如果他們確認,那麼列表會被添加。接受用戶上傳最佳做法!

在允許用戶上傳圖片方面,實現此目的的最佳方法是什麼?我要麼使用SWFUpload或uploadify,但我應該直接將圖像添加到數據庫,如果是這樣的列表ID?我不創建列表ID,直到用戶點擊確認。那麼最佳做法是什麼?我應該將它們存儲在以會話命名的臨時文件夾中嗎?存儲在臨時名稱像地址+會話數據庫或什麼?

編輯:嗨,對不起,也許我沒有表達得很清楚。我不想找到上傳文件的方法。我所問的是,在我知道用戶是否真的要確認列表之前,如何最好地存儲它們。我應該將它們存儲在臨時文件夾中,然後在用戶確認列表時處理它們,然後編寫一個自動腳本,刪除一小時前創建的文件夾。或者,我應該將它們存儲在臨時表中的數據庫下的某種由會話和列表屬性組成的鍵中?基本上,我問的是ebay在添加列表時,但在確認並創建列表之前對上傳的圖片做了些什麼。

非常感謝您的幫助!

+4

$標題= str_replace函數( '做法', '行爲',$標題); //;) – 2010-01-25 02:17:23

+0

哈哈 - 哈哈。哈哈+1 – 2010-01-25 02:17:56

+1

@BillyONeal:你的代碼工作!該瓷磚現在已修好。 :) – 2010-01-25 02:57:40

回答

1

既然你提到的Zend Framework,我包括摘錄以及鏈接到文檔:

Zend_File_Transfer提供文件上傳和下載 廣泛 支持。它內置 文件驗證程序和 功能,可用 過濾器更改文件。協議適配器允許 Zend_File_Transfer爲HTTP, FTP,WEBDAV等傳輸協議公開相同的 API。

瞭解更多:http://framework.zend.com/manual/en/zend.file.html

Zend_File_Transfer與該 可以用來提高安全性和 防止可能的攻擊 幾個文件相關的驗證交付。

瞭解更多:http://framework.zend.com/manual/en/zend.file.transfer.validators.html

和示例:http://ahsangill.wordpress.com/2009/02/17/zend-framework-file-upload-using-zend_form_element_file/

1

我沒有用使用'Zend的,所以可以是吹吸。看來這個問題並不是真的取決於'zend'。

3步上傳看起來有些尷尬。是否有使用3種形式的理由?看起來這個概念只是導致使用臨時文件的困境(這是一個壞主意,順便說一句)。

至少,我會結合前兩步,描述和圖片上傳。是否有理由不在說明頁面上包含「選擇文件」按鈕?即使你沒有照片,看起來特別麻煩。如果用戶確實有圖片,則實際放置它是合理的,並且描述在他們在數據庫中的最終位置被標記爲「暫定」。您的演示文稿代碼將忽略「暫定」項目(除了所有者以外的任何用戶)。這比單獨考慮文件要乾淨得多。如果用戶從不確認,最終會進行一些清理工作。但是,如果用戶只是暫時分心或斷開(的撥號調制解調器的天思軟件),這將是很容易讓他拿起他離開的地方。您的演示文稿搜索/演示代碼會顯示用戶自己擁有的「暫定」項目。當他確認時,你只需要將狀態從「暫定」改爲「已確認」即可。

那是第三個「確認」頁面輸入密碼的請求,或「你確定/預覽頁面?我希望這不是前者。用戶在第一個「描述」頁面時應該已經被授權。如果最終頁面僅用於提供文本預覽,則可以通過像StackOverflow一樣顯示預覽來消除它。如果將與「Zend的衝突,或者你想表現跟圖片上的完整佈局,然後喲可以把一個「預覽」按鈕,一個獨一無二的網頁。

最乾淨的設計是與說明,對於可選的畫面,「預覽」按鈕「選擇文件」按鈕和「終結」按鈕,文本字段的單頁。用戶可以輸入他的描述,也可以選擇一個圖片文件。在他選擇「定稿」或「預覽」之前不會發生數據傳輸。如果他感到很勇敢,他會擊中'最終確定',數據被轉移,並標記'已確認'。如果他想預覽,則會發生相同的傳輸,但數據在數據庫中標記爲「暫定」。顯示頁面可能不得不改變以包含圖片。在上傳圖片之前,您不希望在「說明」頁面上浪費空間。但它會在吐出<IMG...>的畫面,只有當一個圖片是可用的代碼的簡單條件步驟。

+0

嘿謝謝加里!這正是我之後的那種信息。您的完全正確,它與Zend平臺本身沒有真正的關係,這是一個更一般的設計決定。現在清除一些東西......是的,確認頁面只是顯示上傳列表的完整示例,而不是驗證。我真的很喜歡將它分成3頁的想法,因爲用戶必須添加很多細節並添加多張照片。我想我可以創建一個包含所有元素的大型表單,然後簡單地將它分成3個使用JavaScript。還有什麼建議? – Nick 2010-02-02 03:18:07