4

我想通过页面中的另一个控件触发 AsnyncFileUpload 控件。

我使用了 ASP.NET AJAX 工具包中的 AsyncfileUpload 并通过 JQuery 隐藏了它。并在其旁边放置一个按钮。即使我单击此按钮并选择一个文件,我也想触发 AsycnFileUpload 并上传文件。

我已经编写了大部分代码,但是当我选择文件时出现 Javascript 错误。


(错误:拒绝访问;

地方:setTimeout(function () { mainForm.submit(); //Error here; uploader._waitTimer = setTimeout(function () { uploader._wait() }, 100); }, 0);


<asp:Button ID="btnFileUpload" runat="server" Text="Add" onclientclick="FileUploadClick(); return false;"/>
<ajaxToolkit:AsyncFileUpload  runat="server" ID="AsyncFileUpload1" Width="400px" UploaderStyle="Modern" UploadingBackColor="#CCFFFF"/>

这是我的 Javascript(我看到了控件生成的标记,并通过附加“_ct102”获得了文件输入类型)

function FileUploadClick() {
            var fileUploadControl = document.getElementById('<%= AsyncFileUpload1.ClientID %>' + '_ctl02')
            fileUploadControl.click();
            //fileUploadControl.setActive();                
        }
4

2 回答 2

2

我对此进行了更多研究,发现无法做到这一点。由于安全原因,从其他控件触发文件类型输入被禁用。所以这不能做。

设置文件上传控件样式的唯一解决方法是将控件放置为不透明度为 0 并将我们的控件放置在此文件控件下方并更改 HTML 中的 Z-index。事实上,这正是 AsyncFileUpload 控件使用的技巧。

这是解释技巧的链接 http://www.quirksmode.org/dom/inputfile.html

所以我在 AsyncFileUpload 上应用了这个技巧,它在内部将它应用到 HTML 文件上传控件上

谢谢大家

于 2011-12-19T08:18:23.137 回答
-1

上述问题的简单解决方案是添加 CSS,例如这将适用于所有浏览器。

<style type="text/css">
    .FileUploadClass input
    {
        width:100%!important; // mandatory
    }
</style>

<ajaxToolkit:AsyncFileUpload ID="asyncFileUpload" runat="server" CssClass="FileUploadClass" OnUploadedComplete="asyncFileUpload_UploadedComplete" UploaderStyle="Traditional"/>
于 2013-09-30T13:14:02.303 回答