Asp.net生成缩略图和UpdateProgress

24 篇文章 0 订阅
8 篇文章 0 订阅

前台Code:

<form id="form1" runat="server">
    <!--这里是缩略图部分 start-->
    <div>
        <p>
            <input id="uploadFile" type="file" runat="server" />
            <asp:Label ID="lblErrInfo" runat="server" ForeColor="Red"></asp:Label>
            <br />
            原始图:
            <asp:Image ID="initImage" runat="server" />
        </p>
        <p>
            你希望的宽度:<asp:TextBox ID="txtHopeWidth" runat="server">100</asp:TextBox>
            <br />
            你希望的高度:<asp:TextBox ID="txtHopeHeight" runat="server">80</asp:TextBox>
        </p>
        <p>
            <input id="button" type="button" value="上传生成缩略图" runat="server" onserverclick="Button_Click" />
        </p>
        <p>
            生成缩略图:
            <img id="maopian" runat="server" />
        </p>
    </div>
    <!--这里是缩略图部分 end-->

    <!--这里是UpdateProgress部分 start-->
    <div>
        <asp:ScriptManager ID="ScriptManager1" runat="server">
        </asp:ScriptManager>
        <asp:UpdatePanel ID="UpdatePanel1" runat="server">
            <ContentTemplate>
                <asp:Button ID="Button1" runat="server" Text="发送AJAX请求" OnClick="Button1_Click" />
                <asp:Label ID="Label1" runat="server" Text=""></asp:Label>
            </ContentTemplate>
        </asp:UpdatePanel>
        <asp:UpdateProgress ID="UpdateProgress1" runat="server" AssociatedUpdatePanelID="UpdatePanel1"
            DisplayAfter="1000">
            <ProgressTemplate>
                <div>
                    <asp:Image ID="Image1" ImageUrl="~/image/load.gif" runat="server" />
                </div>
            </ProgressTemplate>
        </asp:UpdateProgress>
    </div>
    <!--这里是UpdateProgress部分 end-->
    </form>



后台Code:

 protected void Button_Click(object sender, EventArgs e)
        {
            Maopian();
         }

protected bool ThumbnailCallback()
        {
            return true;
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            System.Threading.Thread.Sleep(10000);
            this.Label1.Text = "请求处理完毕!";
        }

        public void Maopian()
        {
            if (uploadFile.PostedFile != null)
            {
                //addto为要添加的属性,aboutfile为文件说明
                string nam = uploadFile.PostedFile.FileName;
                //取得文件名(抱括路径)里最后一个"."的索引
                int i = nam.LastIndexOf(".");
                //取得文件扩展名
                string newext = nam.Substring(i);
                //这里我自动根据日期和文件大小不同为文件命名,确保文件名不重复
                DateTime now = DateTime.Now;
                string newname = now.DayOfYear.ToString() + uploadFile.PostedFile.ContentLength.ToString();
                //保存文件到你所要的目录,这里是IIS根目录下的upload目录.你可以改变.
                //注意: 我这里用Server.MapPath()取当前文件的相对目录.在asp.net里"\"必须用"\\"代替,把"upload\\"改成"\\upload\\"就成了取当前文件的绝对目录了
                uploadFile.PostedFile.SaveAs(Server.MapPath("uploads\\" + newname + newext));
                //得到这个文件的相关属性:文件名,文件类型,文件大小
                //fname.Text=myFile.PostedFile.FileName;
                //fenc.Text=myFile.PostedFile.ContentType ;
                //fsize.Text=myFile.PostedFile.ContentLength.ToString();
                //下面是生成缩略图 
                System.Drawing.Image image, aNewImage;
                int width, height, newwidth, newheight;
                image = System.Drawing.Image.FromFile(Server.MapPath("uploads/" + newname.ToString() + newext.ToString()));
                System.Drawing.Image.GetThumbnailImageAbort callb = new System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback);
                width = image.Width;
                height = image.Height;

                newwidth = Convert.ToInt32(txtHopeWidth.Text);
                newheight = Convert.ToInt32(txtHopeHeight.Text);

                aNewImage = image.GetThumbnailImage(newwidth, newheight, callb, new System.IntPtr());
                aNewImage.Save(Server.MapPath("uploads\\" + "small_" + newname + newext));
                image.Dispose();
                //生成缩略图 生成并保存完毕,保存名是在原图名前加了一个small_。
                initImage.ImageUrl = "uploads/" + newname.ToString() + newext.ToString();
                maopian.Src = "uploads/small_" + newname.ToString() + newext.ToString();
            }
        }


最后的效果图:

①先选择文件,点击生成缩略图



②点击发送Ajax请求,停顿5s,看反应图需:    


貌似以上代码复制即可直接使用,有问题给我流言!仅供参考!!


2012年7月16日 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值