从codebehind调用Uploadify

时间:2017-02-14 15:04:36

标签: asp.net vb.net uploadify

我有两个asp控件:FileUpload和Button 在FileUpload我添加uploadify属性,它的工作原理 我还想使用该按钮对代码隐藏进行一些操作,然后调用文件上传,但文件弹出窗口不会出现

出于测试目的,我试图减少所有客户端,但它仍然无法工作......

这是我的三个标签

 <asp:Button Text="Browse" OnClick="Carica_File_Click" runat="server" ID="UploadButton" CssClass="Load_Button" align="center"/>
 <asp:Button Text="BrowseFromClient" OnClientClick="openfileDialog();" runat="server" ID="Button1" CssClass="Load_Button" align="center"/>
 <asp:FileUpload runat="server" ID="FileUploadMain" align="center" />

客户端

<script type="text/javascript">
    $(window).load(
       function () {
           $("#ContentPlaceHolderMain_FileUploadMain").uploadify({
               'swf': '../Scripts/uploadify.swf',
               'cancelImg': '../images/uploadify-cancel.png',
               'buttonText': 'Browse Files',
               'uploader': '../FrontEnd/Upload.ashx<%=GetUploadParams()%>',
                'folder': '',
                'fileDesc': 'UPLOAD FILES',
                'fileExt': '*.jpg;*.jpeg;*.gif;*.png;*.pdf;*.doc;*.docx',
                'multi': true,
                'auto': true,
                'buttonImage': '<%=GetUploadFileUrl()%>',
                'width': 217,
                'removeTimeout': 1,
                'removeCompleted': false,
                'buttonClass': '',
                'onUploadSuccess': function () {
                    location.reload(true);
                }

            });
        }
   );
</script>
<script>
        function openfileDialog() {
            $("#FileUploadMain").click();
        }
</script>

服务器端

Protected Sub Carica_File_Click(sender As Object, e As EventArgs)
    Dim ClientID As String = FileUploadMain.ClientID
    ScriptManager.RegisterStartupScript(Me, Page.GetType, "Script", "document.getElementById('#" & ClientID & "').click();", True)
    ...code
End Sub

我哪里出错了?

1 个答案:

答案 0 :(得分:0)

最后我做了一个解决方法:

执行代码我强制在文件成功上传的情况下使用回发标记,然后在后面的代码上的page_load上处理

        $(window).load(
           function () {
               $("#ContentPlaceHolderMain_FileUploadMain").uploadify({
                    ....parameters
                   'onUploadSuccess': function (file, data, response) {
                       location.reload(true);
                       var ObjF = file.name;
                       __doPostBack('FileLoaded', ObjF);
                   }
               });
           }
       );

对于点击,我认为用户的安全性是不可能的(因为代码或隐藏按钮处理的上传点击可能很危险) 所以我隐藏了uploadify按钮,并为其添加了一个我可以处理的自定义按钮

                <div style="position:relative;" class="row box_upload">
                    <div style="width:100%;">
                       <asp:FileUpload runat="server" ID="FileUploadMain" align="center" />
                    </div>
                    <asp:Button text="Browse" style="width:100%;height:100%;position:absolute;top:0;left:0;" runat="server" ID="UploadButton" return false;" ></asp:button>
                </div>

缺点是有了这个i客户端点击不能在按钮上使用,因为它被uploadify对象点击覆盖但是我会在必要时留下它(并且使用回发方法我不需要任何东西别的)