兼容IE,Chrome,火狐,等主流浏览器的上传控件实例代码

使用微软自带的上传控件在Chrome下会显示不正常,所以可以自定义一个上传控件来达到兼容的目的:

 

1、首先需要引用JQuery脚本,在页面的<head>与</head>之间插入如下代码:

<script type="text/javascript" src="js/jquery-1.5.2.js"></script> 

  

2、首先在前台我们这样设置,如下所示,将下面的这段代码放到页面的任意位置

            <%--Upload file content--%>
            <div style="width: 728px; float: left; margin-left: 10px; margin-top: 10px; border-bottom-style: solid;
                border-bottom-width: 1px; border-left-style: solid; border-left-width: 1px; border-right-style: solid;
                border-right-width: 1px; border-top-style: solid; border-top-width: 1px"
>
               
                <asp:UpdatePanel ID="UpdatePanel2" runat="server" UpdateMode="Conditional">
                    <ContentTemplate>
                        <div id="enquiry_hw2">
                            <%--Add upload file--%>
                            <div>
                                <input class="input_text" readonly="readonly" type="text" id="Text2" name="txt" />
                                <%--<asp:ImageButton CssClass="dd1" Visible="false" ID="btnUpload" runat="server" Height="22px"
                                            Width="78px" OnClick="btnUpload_Click" />--%>
                            </div>
                            <div id="divfileTxt" runat="server" class="u-file-c">
                                <input type="file" id="File1" name="attach" onchange="txt.value=this.value" /><div
                                    
id="fileuploadtext" id="div1">
                                    选择上传文件</div>
                            </div>
                            <script type="text/javascript">
                                $(document).ready(function () {
                                    $('.u-file-c').addClass('u-file-btn'); $('.u-file-c').each(function (i, el) {
                                        $(this).html($(this).html());
                                    })
                                }); </script>
                            <asp:TextBox ID="txtFileUploadRemark" runat="server" Rows="3" Height="45px" TextMode="MultiLine"
                                Width
="486px"></asp:TextBox><br />
                        </div>
                       </ContentTemplate>
                </asp:UpdatePanel>
            </div>

        </div> 

 

3、然后再项目中添加css文件,主要用到了如下的样式,如下所示:

 .u-file-btn {

        position: relative; direction:ltr; height:18px; overflow:hidden;
        line-height
: 18px;  margin-right: 10px; padding:3px 0;  margin-bottom:6px;
        text-align
: center;  width:100px; background: #880000; color:#FFF;
}

.u-file-btn input
{
        cursor
: pointer; text-align: right; z-index: 10; font-size: 118px; /* font-size: 118px 工作正常 */
        position
: absolute; top: 0px; right:0px; opacity: 0; filter: Alpha(opacity:0);
}

 

4、后台是这样的:

 

    private void uploadFile()
    {
        HttpFileCollection files = HttpContext.Current.Request.Files;
        string popUploadtip = string.Empty;

        System.Text.StringBuilder strMsg = new System.Text.StringBuilder("<br/>");
        try
        {
            for (int iFile = 0; iFile < files.Count; iFile++)
            {
                HttpPostedFile postedFile = files[iFile];
                string fileName = string.Empty, fileExtension = string.Empty, handlefileName = string.Empty, filesubName = string.Empty;
                fileName = System.IO.Path.GetFileName(postedFile.FileName);
                if (fileName != "")
                {
                    fileExtension = System.IO.Path.GetExtension(fileName);
                    filesubName = fileName.Substring(0, fileName.IndexOf("."));

                    handlefileName = filesubName + "_" + DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() +
                                    DateTime.Now.Day.ToString() + DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString() +
                                    DateTime.Now.Second.ToString() + fileExtension;

                    if (postedFile.ContentLength < 1)
                    {
                        this.HiddenSaveUploadValue.Value = "UploadNothing";

                        popUploadtip = "您的文件内容为空,请重新选择文件!";
                        this.RegScript("\n<script type=\"text/javascript\">\n//<![CDATA[\n" + "alert(\"" + popUploadtip + "\")" + "\n//]]>\n</script>");
                    }
                    else
                    {
                        postedFile.SaveAs(Server.MapPath("Uploads/") + handlefileName);

                        this.HiddenSaveUploadValue.Value = "UploadSuccess";

                        popUploadtip = "上传文件成功!";
                        this.RegScript("\n<script type=\"text/javascript\">\n//<![CDATA[\n" + "alert(\"" + popUploadtip + "\")" + "\n//]]>\n</script>");

                    }
                }
            }
        }
        catch
        {
            this.HiddenSaveUploadValue.Value = "UploadError";

            popUploadtip = "文件上传失败!";
            this.RegScript("\n<script type=\"text/javascript\">\n//<![CDATA[\n" + "alert(\"" + popUploadtip + ex.Message + "\")" + "\n//]]>\n</script>");
        }
    }

 

  

5、这时可以运行,显示效果如下所示: 

 

在IE中的效果:


 

 在Chrome中的效果:

 

 

在火狐中的效果:

 

  

  

 

posted @ 2012-02-22 10:48  litao6664  阅读(2704)  评论(8编辑  收藏  举报