前台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>
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日