2010-08-10 53 views
0

我使用jquery iframe插件將HTML噴射到iframe中。其中包括: 包含:在iframe中推送「選擇文件」按鈕(使用jquery)

<form id="update" action="dummy" method="POST" enctype="multipart/form-data"> 
    <div><input type="file" name="data" id="update_data"></div> 
</form> 

然後我運行以下函數。在Chrome調試器中看到樂趣,我可以看到 ,我成功鎖定到框架,窗體和輸入字段。但 選取器不會彈出,並且表單不會提交給(JAX-RS)服務。

function update_file(file) { 
    var iframe = $('#new_file_iframe'); 
    var delform = iframe.contents().find("#update"); 
    var fileinput = iframe.contents().find("#update_data"); 
    // URLencoding? 
    delform.attr("action", "/rex-ws/service/jape/update-file/" + file); 
    fileinput.click(); 
    delform.submit(); 
} 

也許click不是正確的設置它?

回答

1

這是一個安全問題。瀏覽器對編程上的文件上傳可能會有些吝嗇。

我很確定運行fileinput.click()出於這個原因是不可能的。

基於Flash的上傳器如UploadifySWFUpload在這裏有更多的自由。我認爲可以用它們以編程方式打開文件選擇器。但是,使用這些上傳者之一需要一些工作。

+1

當前日期更新... fileinput.click()適用於FF和IE,但不適用於Chrome。 – 2012-10-22 16:32:15

1

我已經在一個項目中完成了這項工作,我會告訴你這有點棘手。

什麼你基本上(嗯,至少對我爲什麼這樣做)做的是:

  • 有一個輸入[文件],您的主頁
  • 在您的上傳操作(即在一個點擊事件主頁)創建和 IFRAME與窗體和重複你的 輸入[文件],並將其連接到您的 新創建的iframe的形式
  • 提交表單中的iframe與 ajaxSubmit會(jQuery插件)

如果你想我可以在這裏添加代碼(但它約120行)。

..fredrik

編輯:

如果你在設計一個HTML5的網站,看看新的輸入文件API。 https://developer.mozilla.org/en/using_files_from_web_applications

+0

我看不到這是如何自動打開文件選擇對話框的。此外,我很確定文件輸入將無法通過仍然選擇的文件傳輸到iframe中。你確定這有效嗎? – 2010-08-10 18:10:32

+0

那麼彈出窗口不會自動打開。這將是一個用戶操作。這只是解決同樣問題的另一種方法(不要認爲這是問題?!)。但是,輸入將會存活。由於輸入只是一個DOM元素,其屬性可以在提交表單之前進行操作。花了一段時間纔算出來,但總之它起作用了。 – fredrik 2010-08-10 19:40:29

+0

但不是自動點擊()OP的點? (雖然我可能是錯的) – 2010-08-10 19:43:16