ASP.NET2.0的FIleUpload
来源:互联网 发布:域名过期多久可以续费 编辑:程序博客网 时间:2024/04/29 05:52
FileUpload控件负责向服务器上传文件
上传的方法:
例如,上传到服务器虚拟目录的IMG文件夹下
FileUpload1.SaveAs(Server.MapPath("img/") + FileUpload1.FileName);
FileUpload1.HasFile属性判断是否有文件
不过为了预防文件重名一般都会随机产生文件名,比如GUID
另PostedFile.InputStream()方法可以以Stream的方式上传
判断格式
string fileEx = System.IO.Path.GetExtension(FileUpload1.FileName).ToLower();
if (fileEx != "gif")
Response.Write("javascript:Alert('上传文件格式不对')");
生成缩略图(以下的方法改自http://blog.csdn.net/doitok/archive/
/// <summary>
/// 生成缩略图
/// </summary>
/// <param name="originalImagePath">源图路径(物理路径)</param>
/// <param name="thumbnailPath">缩略图路径(物理路径)</param>
/// <param name="width">缩略图宽度</param>
/// <param name="height">缩略图高度</param>
/// <param name="mode">生成缩略图的方式
/// "HW"://指定高宽缩放
/// "W"://指定宽,高按比例
/// "H"://指定高,宽按比例
/// "Cut"://指定高宽裁减(不变形)
/// </param>
public static void MakeThumbnail(string originalImagePath, string thumbnailPath, int width, int height, string mode)
{
System.Drawing.Image originalImage = System.Drawing.Image.FromFile(originalImagePath);
int towidth = width;
int toheight = height;
int x = 0;
int y = 0;
int ow = originalImage.Width;
int oh = originalImage.Height;
switch (mode)
{
case "HW"://指定高宽缩放(可能变形)
break;
case "W"://指定宽,高按比例
toheight = originalImage.Height * width / originalImage.Width;
break;
case "H"://指定高,宽按比例
towidth = originalImage.Width * height / originalImage.Height;
break;
case "Cut"://指定高宽裁减(不变形)
if ((double)originalImage.Width / (double)originalImage.Height > (double)towidth / (double)toheight)
{
oh = originalImage.Height;
ow = originalImage.Height * towidth / toheight;
y = 0;
x = (originalImage.Width - ow) / 2;
}
else
{
ow = originalImage.Width;
oh = originalImage.Width * height / towidth;
x = 0;
y = (originalImage.Height - oh) / 2;
}
break;
default:
break;
}
//新建一个bmp图片
System.Drawing.Image bitmap = new System.Drawing.Bitmap(towidth, toheight);
//新建一个画板
System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitmap);
//设置高质量插值法
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
//设置高质量,低速度呈现平滑程度
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
//清空画布并以透明背景色填充
g.Clear(System.Drawing.Color.Transparent);
//在指定位置并且按指定大小绘制原图片的指定部分
g.DrawImage(originalImage, new System.Drawing.Rectangle(0, 0, towidth, toheight),
new System.Drawing.Rectangle(x, y, ow, oh),
System.Drawing.GraphicsUnit.Pixel);
try
{
//以jpg格式保存缩略图
bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg);
}
catch (System.Exception e)
{
throw e;
}
finally
{
originalImage.Dispose();
bitmap.Dispose();
g.Dispose();
}
}
生成文字水印(这个方法测试的时候image.Save(Path_sy)显示GDI错误,哪位高手看到知道为什么说明下)
/// <summary>
/// 在图片上增加文字水印
/// </summary>
/// <param name="Path">原服务器图片路径</param>
/// <param name="Path_sy">生成后的文件</param>
/// <param name="sText">要生成的水印文字</param>
protected void AddShuiYinWord(string Path, string Path_sy,string sText)
{
string addText =sText;
System.Drawing.Image image = System.Drawing.Image.FromFile(Path);
System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(image);
g.DrawImage(image, 0, 0, image.Width, image.Height);
System.Drawing.Font f = new System.Drawing.Font("Verdana", 16);
System.Drawing.Brush b = new System.Drawing.SolidBrush(System.Drawing.Color.Blue);
g.DrawString(addText, f, b, 15, 15);
g.Dispose();
image.Save(Path_sy);
image.Dispose();
}
生成图片水印
/// <summary>
/// 在图片上生成图片水印
/// </summary>
/// <param name="Path">原服务器图片路径</param>
/// <param name="Path_syp">生成的带图片水印的图片路径</param>
/// <param name="Path_sypf">水印图片路径</param>
protected void AddShuiYinPic(string Path, string Path_syp, string Path_sypf)
{
System.Drawing.Image image = System.Drawing.Image.FromFile(Path);
System.Drawing.Image copyImage = System.Drawing.Image.FromFile(Path_sypf);
System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(image);
g.DrawImage(copyImage, new System.Drawing.Rectangle(image.Width - copyImage.Width, image.Height - copyImage.Height, copyImage.Width, copyImage.Height), 0, 0, copyImage.Width, copyImage.Height, System.Drawing.GraphicsUnit.Pixel);
g.Dispose();
image.Save(Path_syp);
image.Dispose();
}
- ASP.NET2.0的FIleUpload
- asp.net2.0中的FileUpload控件的使用
- ASP.NET2.0中FileUpload控件的使用(即ASP.NET2.0中如何上传文件)
- ASP.NET2.0中FileUpload控件的使用(即ASP.NET2.0中如何上传文件)
- asp.net2.0FileUpload控件的简单使用 - asp.net 教程-
- asp.net2.0FileUpload控件的简单使用 - asp.net 教程-
- ASP.Net2.0学习之FileUpload上传控件
- asp.net2.0 把FileUpload上传的文件保存到Stream对象中还可以继续再保存到数组
- Asp.net2.0的身份验证
- ASP.NET2.0的Profile
- ASP.net2.0的machineKey
- [ASP.NET2.0]Scott Mitchell的ASP.NET2.0教程
- [ASP.NET2.0]Scott Mitchell的ASP.NET2.0教程
- ASP.NET2.0中使用FileUpload上传文件,及文件大小设置
- asp.net图片上传-简单实用(VS2008 FileUpload控件+ASP.NET2.0)按时间+三位随机数重命名
- asp.net图片上传-简单实用(VS2008 FileUpload控件+ASP.NET2.0)按时间+三位随机数重命名
- asp.net图片上传-简单实用(VS2008 FileUpload控件+ASP.NET2.0)按时间+三位随机数重命名
- asp.net2.0 最新的一些更正
- Javascript中继承和Prototype的关系
- 网页javascript精华代码集
- 摘录-BCGControlBar 的使用方法
- 宽字符 和 字符 转换
- mssql修改主键
- ASP.NET2.0的FIleUpload
- 批判公务员考试
- Linux Shell 提示符
- 2007.08.18 晴
- 23种设计模式的趣说详解
- 选择越多,越难选择
- 无线路由器读数的含义[dd-wrt]
- 8.18
- 一些SQL日期时间技巧 [新]