• Net Web端无刷新上传图片


    自己搞的一个web端上传图片功能,思路是在页面放一个iframe,在src指向的页面实现上传并返回图片路径,缺点是会产生很多垃圾文件,待解决

    大概代码如下:

    用户控件代码,文件名UCUpload.ascx:

    前台代码:

    <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="UCUpload.ascx.cs" Inherits="jc.WebFile.ErLive.Site.Custom.UCUpload" %>
    
    <iframe src="/ErLive/Site/Custom/UploadFile.aspx" id="frameUpload" runat="server" scrolling="no" frameborder="0" ></iframe>
    

    后台代码:

    using System;
    using System.Collections.Generic;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    
    namespace jc.WebFile.ErLive.Site.Custom
    {
        public partial class UCUpload : System.Web.UI.UserControl
        {
            #region 公共参数
            /// <summary>
            /// 控件宽
            /// </summary>
            public int frameWidth = 100;
            /// <summary>
            /// 控件高
            /// </summary>
            public int frameHeight = 100;
            /// <summary>
            /// 文件大小kb
            /// </summary>
            public int fileSize = 1024;
            /// <summary>
            /// 保存路径的文本框
            /// </summary>
            public string txtName = "txtImg";
            #endregion
    
            protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    frameUpload.Style.Add("width", frameWidth + "px");
                    frameUpload.Style.Add("height", frameHeight + "px");
                    frameUpload.Attributes.Add("lang", txtName);
                    frameUpload.Attributes.Add("data-fileSize", fileSize.ToString());
                }
            }
        }
    }
    

      

    上传文件代码,文件名UploadFile.aspx:

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="UploadFile.aspx.cs" Inherits="jc.WebFile.ErLive.Site.Custom.UploadFile" %>
    
    <!DOCTYPE html>
    
    <html xmlns="http://www.w3.org/1999/xhtml" style="*overflow: hidden;">
    <head runat="server">
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title></title>
        <style>
            .FileMainUploadCss {
                position: relative;
                cursor: pointer;
                filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
                opacity: 0;
                float: left;
                top: 0;
                left: 0px;
                z-index: 9;
                border: 0px;
                font-size: 50px;
            }
    
            body {
                margin: 0 0;
                padding: 0 0;
                overflow: hidden;
            }
    
            .showImg {
                position: absolute;
                top: 0px;
                left: 0px;
                z-index: 8;
            }
        </style>
    </head>
    <body>
        <form id="form1" runat="server">
            <div>
                <asp:FileUpload ID="xFileUpload" onchange="return fileChange(this)" runat="server" CssClass="FileMainUploadCss" BorderStyle="None" />
                <img id="imgShow" runat="server"  class="showImg" />
                <asp:Button ID="btnSave" runat="server" Text="Button" OnClick="btnSave_Click" Style="display: none" />
                <asp:TextBox ID="txtUImg" runat="server" Text="" Style="display: none"></asp:TextBox>
            </div>
            <input type="hidden" id="hidFildSize" runat="server" value="1024" />
        </form>
        <script type="text/javascript">
    
            var thisId = window.parent.xGetFrameId(this);
            //var frame = window.top.document.getElementById(thisId);
    
            var frame = this.parent.document.getElementById(thisId);
    
            var imgShow = document.getElementById("imgShow");
            var txtUImg = document.getElementById("txtUImg");
            var xFileUpload = document.getElementById("xFileUpload");
            //设置图片显示的宽高
            imgShow.width = frame.clientWidth;
            imgShow.height = frame.clientHeight;
            //设置fileupload的宽高
            xFileUpload.style.cssText += ";" + (imgShow.width) + "px;height:" + (imgShow.height) + "px;";
            //父级页面存储图片url
            var txtName = frame.lang;
            //父级页面存储图片大小
            //alert(frame.dataset.filesize);
            //document.getElementById("hidFildSize").value = frame.dataset.filesize;
            document.getElementById("hidFildSize").value = frame.getAttribute("data-fileSize"); //解决 IE 兼容问题
            function FileSubmit(t) {
                if (t.value != "") {
    
                    if (t.value.length > 0) {
                        var strImg = t.value.substring(t.value.length - 4, t.value.length);
                        strImg = strImg.toLowerCase();
                        if (strImg != ".gif" && strImg != ".jpg" && strImg != ".png" && strImg != ".bmp" && strImg != "jpeg") {
                            alert("照片格式不正确!");
                            return (false);
                        }
                    }
    
                    document.getElementById("btnSave").click();
                    return (true);
                }
            }
            //初始加载时判断父级页面是否存在图片路径
            function SetImgSrc() {
                var PtxtName = window.parent.document.getElementById(frame.lang);
                if (txtUImg.value == "") {
                    if (PtxtName.value == "") {
                        imgShow.src = "/ErLive/img/no.jpg";
                    } else {
                        imgShow.src = PtxtName.value;
                    }
                    //alert(imgShow.src + " = " + imgShow.src.length + "  txtUImg.value = " + PtxtName.value);
                } else {
                    //上传新图片后将路径返回给父级页面
                    PtxtName.value = txtUImg.value;
                }
            }
            SetImgSrc();
    
            //判断文件大小
            var isIE = /msie/i.test(navigator.userAgent) && !window.opera;
            function fileChange(target) {
    
                var fileSize = 0;
                if (isIE && !target.files) {
                    var filePath = target.value;
                    try {
                        var fileSystem = new ActiveXObject("Scripting.FileSystemObject");
                        var file = fileSystem.GetFile(filePath);
                        fileSize = file.Size;
                    } catch (e) {
                        alert(e + "
     跳出此消息框,是由于你的activex控件没有设置好,
    " +
            "你可以在浏览器菜单栏上依次选择
    " +
            "工具->internet选项->"安全"选项卡->自定义级别,
    " +
            "打开"安全设置"对话框,把"对没有标记为安全的
    " +
            "ActiveX控件进行初始化和脚本运行",改为"启动"即可");
                        return false;
                    }
    
                } else {
                    fileSize = target.files[0].size;
                }
                var fsize = document.getElementById("hidFildSize").value;
                fsize = parseFloat(fsize);
                fileSize = parseInt(fileSize);
                var size = fsize / 1024;
                size = parseInt(size);
                if (fileSize / 1024 > fsize) {
                    alert("图片大小不得超过" + ((size > 0) ? (size + "M") : (fsize + "KB")));
                    return false;
                }
                FileSubmit(target);
                return true;
            }
        </script>
    </body>
    </html>
    

     

    后台代码:

    using jc.Common;
    using System;
    using System.Collections.Generic;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    
    namespace jc.WebFile.ErLive.Site.Custom
    {
        public partial class UploadFile : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
    
            }
            protected void btnSave_Click(object sender, EventArgs e)
            {
                string SaveUrl = "/Upload/";
                HttpFileCollection HFC = Request.Files;
                HttpPostedFile UserHPF = HFC[0];
                double fileSize = 0;
                double.TryParse(hidFildSize.Value.ToString(), out fileSize);
                double fSize = fileSize / 1024;
                if (UserHPF.ContentLength / 1024.00 > fileSize)
                {
                    Response.Write("<script>alert('图片大小不超过" + ((fSize > 0) ? (fSize + "M") : (fileSize + "KB")) + "')</script>");
                    return;
                }
                string FileName = HUpload.Upload(xFileUpload, Server.MapPath(SaveUrl), true);
                if (FileName == "")
                {
                    Response.Write("<script>alert('上传图片超过大小')</script>");
                }
                else
                {
                    imgShow.Src = SaveUrl + FileName;
                    txtUImg.Text = SaveUrl + FileName;
                }
                //imgShow.Src = "";
                //txtUImg.Text = "/Upload/201512/1.jpg";
            }
        }
    }
    

    需要的上传函数HUpload.Upload()函数如下:

            /// <summary>
            /// 上传图片,不生成缩略图,文件大小不能超过1M,文件格式为:Jpg,Gif,Bmp,Png
            /// </summary>
            /// <param name="FileUpload">上传控件ID</param>
            /// <param name="imgpath">上传文件存放路径</param>
            /// <param name="b">是否生成年月目录,及返回此目录的字符串</param>
            /// <returns>图片名称</returns>
            public static string Upload(FileUpload FileUpload, string imgpath, bool b)
            {
                string filename = "";
                string str2 = "";
                string path = "";
                if (b)
                {
                    path = Path.Combine(imgpath, DateTime.Now.ToString("yyyyMM"));
                }
                else
                {
                    path = imgpath;
                }
                if (!Directory.Exists(path))
                {
                    Directory.CreateDirectory(path);
                }
                string fileName = FileUpload.PostedFile.FileName;
                string str5 = FileUpload.PostedFile.ContentType.ToLower();
                if ((str5.Equals("image/png") || str5.Equals("image/gif")) || str5.Equals("image/bmp") || str5.Equals("image/x-png") || (str5.Equals("image/jpg") || str5.Equals("image/jpeg") || str5.Equals("image/pjpeg")))
                {
                    string str6 = Path.GetExtension(fileName).ToLower();
                    str2 = DateTime.Now.ToString("yyyyMMddHHmmss") + str6;
                    filename = Path.Combine(path, str2);
                    try
                    {
                        FileUpload.PostedFile.SaveAs(filename);
                        if (b)
                        {
                            return (DateTime.Now.ToString("yyyyMM") + "/" + str2);
                        }
                        return str2;
                    }
                    catch
                    {
                        return "";
                    }
                }
                throw new Exception("上传文件类型只能为:Jpg,Gif,Bmp,Png!");
            }
    

      

    使用方法:

    <!--引入用户控件-->
    <%@ Register Src="~/PublicUserControl/Upload/UCUpload.ascx" TagPrefix="uc1" TagName="UCUpload" %>
    
    
    <!--用于显示、上传图片-->
    <uc1:UCUpload runat="server" ID="UCUploadOne" frameWidth="100" frameHeight="100" txtName="hidImgOne" fileSize="500" />
    
    <!--用于存储图片路径,id与uc1:UCUpload内的txtName参数对应-->
    <input id="hidImgOne" type="text" style="display: none" runat="server" />
    

      

  • 相关阅读:
    cnn softmax regression bp求导
    使用kd-tree加速k-means
    KDTree详解及java实现
    加入商品分类信息,考虑用户所处阶段的 图模型 推荐算法 Rws(random walk with stage)
    用户标签
    LDA(latent dirichlet allocation)
    对物品进行反馈 代码
    1.虚拟机中安装ubuntu
    4.动态HTML处理和机器图像识别
    3.非结构化数据与结构化数据提取
  • 原文地址:https://www.cnblogs.com/clear-dream/p/7200607.html
Copyright © 2020-2023  润新知