2010-08-25 85 views
0

首先,我使用KohanaPHP框架。Flash和會話

我已經成功實施了SWFUpload,工作得很好。我只有一個問題。

主要問題是我需要允許用戶在提交表單前上傳附件。所以我決定使用Session var來存儲附件數組。不幸的是,如果我使用HTML上傳(基於iframe),那麼它是有效的,但在我使用SWFUpload時不起作用。

我試過Google,但沒有任何工作解決方案。有任何想法嗎?

更新&解決方案
基本上,我不知道有Flash和會話的問題。提供相同的會話ID並沒有幫助我,因爲我沒有記錄。無論如何,我爲有同樣問題的人提供瞭解決方案。

我創建了一個項目的唯一ID。我將文件上傳到臨時目錄,然後...我正在掃描此目錄,並且將會上傳的文件名添加到會話中。

湯姆

+0

你需要顯示一些代碼。 – 2010-08-25 09:22:40

+0

@Pekka - 哪些部分的代碼可以幫助你? – Tom 2010-08-25 09:24:34

+0

我對Kohana並不熟悉,所以我無法以任何方式幫助你,但是你正在描述一個抽象的概念(向表單添加附件),而且你沒有展示它是如何實現的。因此,如何使其與SWFUpload一起工作是不可能的。 – 2010-08-25 09:26:24

回答

2

你需要什麼是手工傳遞會話ID SWFUpload的。概括地說,你這樣做在你的模板:

<script type="text/javascript"> 
var PHPSESSID = <?php echo json_encode(session_id()); ?>; 
</script> 

然後你與你的SWFUpload代碼做到這一點:你叫session_start之前

var settings = { 
    post_params: {"PHPSESSID" : PHPSESSID}, 
    /* the rest of the settings */ 
}; 

最後,在應用程序代碼,,你要做到這一點(通常只是在你的index.php或無論您使用的自舉):

// Restore session that came from SWFUpload 
if(isset($_REQUEST['PHPSESSID'])) 
    session_id($_REQUEST['PHPSESSID']); 

這在session_start(後),使用T即使對於SWFUpload請求,他也會修正會話。

+0

我會嘗試你的建議,並會讓你知道他們是否有效。 – Tom 2010-08-25 09:32:39

+0

嗯......在放置'if(isset($ _REQUEST ['PHPSESSID']))session_id($ _REQUEST ['PHPSESSID']);'在會話庫中我沒有記錄?有什麼建議麼? :) – Tom 2010-08-25 10:53:25

+0

它之前是否有其他會話代碼(它絕對*有*是您使用的第一個會話相關功能)。 – 2010-08-25 10:56:25