我正在尝试实现ajax-like-file-upload-using-hidden-iframe。显然有许多插件可用于此目的,但我认为我的要求有点不同。所以我试图实现它如下:
HTML:
<!DOCTYPE>
<html>
<style>
.file_upload{cursor:pointer;color:blue;text-decoration:underline;}
</style>
<body>
<div class="file_upload" id="upload1" name="doc1" >Upload doc1</div>
<div class="file_upload" id="upload2" name="doc2" >Upload doc2</div>
<div id="iframe_div"></div>
</body>
</html>
查询:
$(document).ready(function(){
$(".file_upload").click(function(event){
var itr = $(".file_upload").length;
var iframeName = $(this).attr('name') + itr;
var iframeId = $(this).attr('id') + itr;
$('<iframe />', {
name: iframeName,
id: iframeId,
src: 'about:blank'
}).appendTo('#iframe_div');
//append form to body of the iframe
$('<form>',{
name: iframeName + '_form',
id: iframeId + '_form',
action: 'actionName.action',
method: 'POST',
enctype: 'multipart/form-data'
}).appendTo('#' + iframeId).find('body');
//append file input
//trigger 'click' using $('#file_fld_id').trigger('click')
//browse to file and use 'onchange' to trigger
auto-submit of the form
//replace the 'file-upload' div with a progress bar...
//remove the iframe when upload is complete
});
});
简而言之:
1.点击一个div打开浏览窗口。
2. 使用隐藏 iframe 上传文件。
但我认为我知识渊博(在 jquery 中)无法实现这一点。或者真的可以吗??如果是这样,请帮助/重定向/任何东西......为什么这个明显的功能必须通过变通方法来实现(flash,obex,silverlight,......)..ahhh。
编辑(澄清一点):
正如我提到的'我的 iframe 是动态的'......原因是我的文件输入应该在一个已经存在的表单中,并带有一个单独的操作(struts2)。我还有另一个文件上传操作。由于我们不能在表单中使用表单,所以我正在尝试在现有表单中使用 div 来通过其他操作上传文件。我有不同的文档要在这个表格中单独上传。所以基本上我试图用一个单独的 iframe 替换每个 div(一个用于文件上传),它有自己的表单(但相同的操作会处理上传),当用户在浏览时点击“打开”时,它会自动提交文件。我希望我现在更清楚了。