2009-07-22 141 views
0

嗯,我有一些很奇怪的麻煩,這是發生了什麼:麻煩php.-上傳文件

這是環境: 我有了能夠容納多個「模態面板步驟「,首先你必須上傳文件,然後處理文件,並從處理結果中,我必須生成一些html來填補下一步。

這就是我所做的: 我使用兩種方式之一(使用文件類型輸入和$ _FILES)以兩種方式之一(使用文件類型輸入和$ _FILES)以模式面板的形式上傳文件,使用jquery的$ .ajaxForm將其提交給處理它的php文件。一旦處理完畢,我就擁有了所有需要填充信息的對象,這些對象用在我包含的某個模板中,然後將其中的內容填充到文本變量中,然後將它們json_encode以便添加到我的模式面板的第二種形式中。

到目前爲止......很好......直到我發現當我選擇「從url」並禁用文件輸入時,一切正常,但是當我啓用文件輸入上傳時,結果html從包含模板中得到的內容被破壞了(是的...你必須說WTF ?,但是是真的0_0我嘗試了所有東西,直到我隔離錯誤隱藏的地方...)。 在html結果的開始時添加了一些「PRE」html標籤,每個標籤都轉換爲大寫,所有結束標籤都將其「<」和「>」替換爲實體對應項(如& lt; )。 我通過「提醒」表單回調中的原始HTML結果(顯然是由結果表單造成的損害)看到了這一點。 關於可能發生什麼的任何想法?

在此先感謝!

PS:我有詳細的...:P

回答

1

你或許應該給你正在使用的框架/模板引擎一些細節,因爲它聽起來像這是哪裏出了問題。似乎有關文件輸入版本的表單會令其瘋狂 - 可能需要使用enctype="multipart/form-data"進行文件上傳。您可以通過將enctype屬性添加到非文件對話框中,然後查看它是否變得瘋狂來測試該部分。

如果你的模板引擎負責,修復這個問題可能會涉及升級它或調試它的膽量。

+0

不使用任何模板引擎......無法承受開銷......基本上模板是通過外部處理「僞造」,然後包括html以使用生成的數據。關於enctype,設置好,甚至其他東西發送相同的形式(如果我禁用文件輸入)不要做任何有趣的事情......我不知道... =( 謝謝!! – 2009-07-22 02:32:17

1

據我所知,你不能提交一個像這樣的AJAX上傳。您可以通過在中創建一個表單然後提交它來僞造它,但我認爲您不能使用純ajax來完成它。我是一個原型用戶,但我認爲 jquery或任何其他庫也是如此。

+0

唯一的問題我得到的是我得到那個有趣的行爲...但是就文件上傳而言...文件上傳就OK! 這是因爲我沒有僞造提交,但真的提交,處理提交和捕獲事件。 環顧jquery的ajaxForm :) – 2009-07-22 02:34:41