千家信息网

c#怎么实现多图片上传并生成缩略图

发表于:2024-11-15 作者:千家信息网编辑
千家信息网最后更新 2024年11月15日,这篇文章主要介绍"c#怎么实现多图片上传并生成缩略图",在日常操作中,相信很多人在c#怎么实现多图片上传并生成缩略图问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"c#怎
千家信息网最后更新 2024年11月15日c#怎么实现多图片上传并生成缩略图

这篇文章主要介绍"c#怎么实现多图片上传并生成缩略图",在日常操作中,相信很多人在c#怎么实现多图片上传并生成缩略图问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"c#怎么实现多图片上传并生成缩略图"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

前台代码:

复制代码 代码如下:



<%@ Page Language="C#" AutoEventWireup="true" CodeFile="upload.aspx.cs" Inherits="upload" %>







































前台就是几个控件和一个ValidImage方法。

后台代码:

复制代码 代码如下:



protected void btnPostFile_ServerClick(object sender, EventArgs e)
{
string filePath = Server.MapPath("/uploadImg");
const int size = 5242880;
if (!Directory.Exists(filePath))
{
Directory.CreateDirectory(filePath);
}
if (Request.Files.Count > 0)
{
for (int i = 0; i < Request.Files.Count; i++)
{
HttpPostedFile postFile = Request.Files[i];
string uploadFileID = string.Format("#upload{0}", i + 1); //当前的上传控件ID,因为jquery要调用就加了#
string msg = null; //提示信息
if (postFile.FileName.Trim().Length <= 0)
{
continue;
}
if (postFile.ContentLength > size)
{
msg = "文件太大";
Page.ClientScript.RegisterStartupScript(GetType(), "", "ValidImage(" + uploadFileID + "," + msg + ")", true);//将提示信息发送到客户端
continue;
}
string savePath = Path.Combine(filePath, postFile.FileName); //图片的保存地址
if (!File.Exists(savePath))
{
postFile.SaveAs(Path.Combine(filePath, postFile.FileName)); //如果文件不存在就保存
}
else
{
msg = "文件" + postFile.FileName + "已经存在";
Page.ClientScript.RegisterStartupScript(GetType(), "", "ValidImage(" + uploadFileID + "," + msg + ")", true);//将提示信息发送到客户端
continue;
}
if (IsImg(savePath)) //通过IsImg方法验证文件是否是图片,或者格式是否正确
{
SmallImg(postFile.InputStream, postFile.FileName);
}
else
{
msg = "只能上传JGP、PNG类型的图片,请检查文件格式是否正确";
Page.ClientScript.RegisterStartupScript(GetType(), "", "ValidImage(" + uploadFileID + "," + msg + ")", true);//将提示信息发送到客户端
File.Delete(savePath); //如果不是图片就删除
}
}
}
}

复制代码 代码如下:

#region 验证上传文件的格式
///


/// 验证上传文件是否是图片
///

/// 文件的保存路径
///
private bool IsImg(string FilePath)
{
using (FileStream fs = new FileStream(FilePath, FileMode.Open, FileAccess.Read))
{
bool result = false;
BinaryReader br = new BinaryReader(fs, System.Text.Encoding.UTF8);
string strImg = "";
byte buffer;
try
{
buffer = br.ReadByte();
strImg = buffer.ToString();
buffer = br.ReadByte();
strImg += buffer.ToString();
}
catch
{
fs.Close();
br.Close();

}
if (strImg == "255216" || strImg == "13780")//说明255216是jpg;7173是gif;6677是BMP,13780是PNG;7790是exe,8297是rar
{
result = true;
}
return result;
}
}
#endregion

复制代码 代码如下:



#region 将图片生成缩略图
///


/// 生成缩略图
///

private void SmallImg(Stream oStream, string FileName)
{
using (System.Drawing.Image img = System.Drawing.Image.FromStream(oStream))
{
int newWidth = 100;
int newHeight = 80;
int oldWidth = img.Width;
int oldHeight = img.Height;
if (oldWidth > oldHeight)
{
newHeight = (int)Math.Floor((double)oldHeight * (double)newWidth / (double)oldWidth);
}
else
{
newWidth = (int)Math.Floor((double)oldWidth * (double)newHeight / (double)oldHeight);
}
using (Bitmap bmp = new Bitmap(newWidth, newHeight))
{
using (Graphics g = Graphics.FromImage(bmp))
{
g.Clear(Color.Transparent);
g.InterpolationMode = InterpolationMode.High;
g.CompositingQuality = CompositingQuality.HighQuality;
g.SmoothingMode = SmoothingMode.HighQuality;
g.DrawImage(img, new Rectangle(0, 0, newWidth, newHeight), new Rectangle(0, 0, oldWidth, oldHeight), GraphicsUnit.Pixel);
string newFileName = Path.GetFileNameWithoutExtension(FileName) + "_small" + Path.GetExtension(FileName); //缩略图名称
string filePath = Server.MapPath("/uploadImg/") + newFileName;
bmp.Save(filePath);
}
}

}
}
#endregion

到此,关于"c#怎么实现多图片上传并生成缩略图"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

图片 代码 文件 生成 c# 信息 学习 提示 客户 客户端 方法 格式 验证 前台 控件 更多 帮助 实用 接下来 后台 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 医疗软件开发职业好不 sql数据库错误代码823 池州网络安全保卫支队 网络安全密码与口令的概念 数据库的安全保障 成都数字化博物馆软件开发 枞阳租房软件开发 多个不同的数据库合成一个虚拟库 江苏屏芯安互联网科技有限公司 对日软件开发需要学什么 笔记本更新后显示服务器登录失败 绿盟科技网络安全万亿空间 中国期刊数据库采用什么分类法 数据库设计可以设计哪些 空间数据库建库主要过程 lol老是断开服务器 数据库需要用什么硬件 数据库怎么查询表的内容总和 炉石传说怎么关闭服务器 四川信息化软件开发服务标准 使用usb共享网络安全吗 农村网络安全普及教育活动 新乡市佳速网络技术有限公司 县级网络安全哪个部门 部队网络安全宣传短句十个字 甲骨文服务器有快照功能吗 云服务器安全组的出方向和入方向 举例说明数据库中宏 文件服务器的安全性 根据网络安全要求
0