jsGears.com 技術論壇 - AJAX, JavaScript, jQuery, 網站開發, 前端效能優化's Archiver

domino 發表於 2010-2-9 21:02

Jquery傳送檔案問題

[i=s] 本帖最後由 domino 於 2010-2-10 17:41 編輯 [/i]

請問Jquery 是不是無法透過 post 來提交表單的檔案...上傳呢?
是有安全性限制嗎?

如果可以,post 部份該怎寫呢@@.

wmh 發表於 2010-2-9 22:06

[b]回復 [url=http://jsgears.com/redirect.php?goto=findpost&pid=1080&ptid=380]1#[/url] [i]domino[/i] [/b]

表單上傳是一定要用 post 沒錯。

你是要用 JavaScript 做非同步上傳的效果嗎?一般來說流程是這樣的:
[list]
[*]在頁面上做一個隱藏的 iframe
[*]把上傳檔案表單的 target 指到這個 iframe
[*]user 選取檔案上傳後,就會透過這個 iframe 進行 post 上傳檔案
[*]檔案上傳完成後,頁面刷新,驅動頁面上的 onload
[*]再呼叫原頁面上的 JavaScript 進行後續動作
[/list]

過程還蠻複雜的,如果你不熟悉整個流程的話,建議用 jQuery 現有的 plugin 即可。

domino 發表於 2010-2-9 23:24

[b]回復 [url=http://jsgears.com/redirect.php?goto=findpost&pid=1082&ptid=380]2#[/url] [i]wmh[/i] [/b]

1.請問他這樣限制是為了安全性嗎?
2.請問管理員能推薦哪些外掛呢? 只需處理上傳部分.

wmh 發表於 2010-2-9 23:45

1. 和安全性無關喔,用 GET 沒辦法上傳檔案
2. 我用過 [url=http://www.malsup.com/jquery/form/]jQuery Form[/url],使用上相當簡單。你也可以參考[url=http://blog.finalevil.com/2009/10/jquery123file-upload-postback.html]這一篇[/url]介紹的三種上傳程式。

domino 發表於 2010-2-10 00:08

[quote]1. 和安全性無關喔,用 GET 沒辦法上傳檔案
2. 我用過 ,使用上相當簡單。你也可以參考介紹的三種上傳程式 ...
[size=2][color=#999999]wmh 發表於 2010-2-9 23:45[/color] [url=http://jsgears.com/redirect.php?goto=findpost&pid=1085&ptid=380][img]http://jsgears.com/images/common/back.gif[/img][/url][/size][/quote]

我就是使用 $.post 才無法發送.
做一個隱藏的 iframe 該不會是解決 跨域
還是XMLHttpRequest本身不能上傳檔案的缺陷.

wmh 發表於 2010-2-10 01:06

檔案上傳的動作一般是由瀏覽器在處理的,先讀取檔案,編碼後再傳輸。

如果你要透過 JavaScript 做這件事,會有很多問題要處理,你得讓 JavaScript 能讀取你 local 端的檔案,得自己做編碼,等等...

透過 iframe 的話,這些事還是由瀏覽器負責,表單還是一樣,只是 target 不同而已。

domino 發表於 2010-2-10 01:19

[i=s] 本帖最後由 domino 於 2010-2-10 17:42 編輯 [/i]

請問站長..我看了官方的說明我還是不太瞭解怎使用.

wmh 發表於 2010-2-10 01:35

你可以參考 ajaxSubmit 這一段:
[url]http://www.malsup.com/jquery/form/#ajaxSubmit[/url][code]
$('#form1').ajaxSubmit();
[/code]

domino 發表於 2010-2-10 02:52

感謝版主,我搞定了.

不過我有個問題.
這是一次性把表單物件都給傳出去.
是否能分開呢?

因為上傳欄位是可以自己新增的.
要每個欄位獨立上傳.

wmh 發表於 2010-2-10 08:54

如果你新增的都是檔案上傳的欄位,那麼可能要連同表單都是新建的喔

domino 發表於 2010-2-10 17:44

這樣說來.
利用這個外掛要做成分別返回上傳欄位的上傳結果 不能了??

wmh 發表於 2010-2-10 19:49

要選取特定欄位 post 是可以,但是如果有檔案則不行,跟之前一樣的問題。
所以如果是要單獨上傳一個檔案,則要新增一個表單,裡面就一個檔案上傳的欄位,這樣才行。

頁: [1]

Powered by Discuz! Archiver  © 2001-2009 Comsenz Inc.