C# .NET 实现图片上传功能详解
.NET图片上传功能详解 在.NET环境中实现图片上传功能是一项常见的需求,特别是在Web开发中,用户可能需要通过表单提交上传图片到服务器以便存储、展示或进一步处理。本文将详细介绍如何在一个名为`PhotoPage`的ASP.NET页面上实现图片上传功能。 首先,我们需要了解在代码中涉及的关键类和方法: 1. **`SqlConnection`和`SqlCommand`**:这两个类用于连接数据库和执行SQL命令。在这里,它们被用来配置一个到名为"test"的SQL Server数据库的连接,用户名为"sa",密码为空(实际项目中应使用安全方式管理密码)。 2. **`Page_Load`事件处理方法**:这是页面加载时自动调用的方法,通常用于数据绑定、初始化控件等。在这个例子中,它可能是空的,表明在页面加载时不执行特定的图片上传操作。 3. **`btnOK_Click`事件处理方法**:当用户点击按钮"btnOK"时,这个方法会被触发。这里的重点是图片上传逻辑。 4. **`fileUp`对象**:这应该是一个`HttpFileUpload`控件,用户通过这个控件选择并上传图片。`fileUp.PostedFile.FileName`属性用于获取用户选择的文件名。 5. **变量声明**:如`P_str_filePath`、`P_str_fileExtName`和`P_str_mPath`分别用于存储上传文件的路径、扩展名和最终保存的目录。 6. **`System.IO`和`System.Drawing`命名空间**:`System.IO`库提供了对文件操作的支持,包括读写文件和处理流;而`System.Drawing`库则与图像处理相关,例如处理图片的大小或格式转换。 在`btnOK_Click`方法中,关键部分如下: - 首先,检查`fileUp.PostedFile.FileName`是否为空,如果不为空,说明用户选择了文件。 - 然后,获取文件路径和扩展名,并将文件名存储到`P_str_filePath`中。 - 接着,尝试使用`Server.MapPath`方法将相对路径转换为服务器上的物理路径,将图片保存到服务器上。这一步是关键,因为它确保图片被正确地存储在网站的指定目录下,通常是网站根目录的一个子目录。 在实际开发中,为了防止恶意文件上传(例如,上传脚本或病毒),还需要进行一些额外的安全检查,如检查文件类型、大小限制,以及对文件内容进行验证。此外,图片上传完成后,可能还需要进行数据库记录操作,例如将文件名、上传时间等信息存储到数据库中,以便于后期管理。 最后,如果图片上传成功,可以在`strMsg`中构建返回的消息,可能包含一个HTML片段来显示上传状态或者提供下一步操作的链接。如果出现错误,可以更新`strMsg`以显示错误信息。 这个.NET图片上传功能的核心是通过`HttpFileUpload`控件收集用户上传的图片,然后通过`Server.MapPath`将其保存到服务器,并进行必要的安全性检查。这是一项基础但实用的功能,对于任何需要用户上传图片的Web应用都是必不可少的。
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using System.IO; //注意把这个加上
using System.Drawing; //注意把这个加上
public partial class PhotoPage : System.Web.UI.Page
{
SqlConnection sqlCon = new SqlConnection("server=MICROSOF-ECCF32;user id=sa;pwd=;database=test;");
SqlCommand sqlCom = new SqlCommand();
protected void Page_Load(object sender, EventArgs e)
{
}
protected void btnOK_Click(object sender, EventArgs e)
{
string P_str_filePath = ""; //定义一个在客户端文件的路径的变量
string P_str_fileExtName = "", P_str_mFileName, P_str_mPath;//文件的扩展名
System.Text.StringBuilder strMsg = new System.Text.StringBuilder("上传图片;<hr color=red>");
{
P_str_filePath = fileUp.PostedFile.FileName; //获取图片路径
P_str_fileExtName = P_str_filePath.Substring(P_str_filePath.LastIndexOf(".")+1); //获取扩展名
try
{
P_str_mPath = Server.MapPath("Images/Pictures/"); //获取服务器端的文件的路径
P_str_mFileName = P_str_filePath.Substring(P_str_filePath.LastIndexOf("\\") + 1); //获取文件的名称
fileUp.PostedFile.SaveAs(P_str_mPath + P_str_mFileName); //保存到制定的路径下
//生成缩略图
string smallFileName = Server.MapPath("Images/SmallPictures/")+P_str_mFileName; //上传缩略图的路径
System.Drawing . Image smallImage = System.Drawing .Image.FromStream(fileUp.PostedFile.InputStream, true); //从文件中取出图片对象
double width = Double.Parse(TextBox1.Text .ToString ()); //设定的高度和宽度
double height = Double.Parse(TextBox2.Text .ToString ());
double NewWidth, NewHeight; //新的高度和宽度
if (smallImage.Width > smallImage.Height)
{
NewWidth = width;
NewHeight = smallImage.Height * (NewWidth / smallImage.Width);
}
else
{
NewHeight = height;
NewWidth=smallImage.Width*(NewHeight/smallImage.Height);
}
if (NewHeight > height)
{
NewHeight = height;
}
剩余7页未读,继续阅读
- 粉丝: 11
- 资源: 6
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- WebLogic集群配置与管理实战指南
- AIX5.3上安装Weblogic 9.2详细步骤
- 面向对象编程模拟试题详解与解析
- Flex+FMS2.0中文教程:开发流媒体应用的实践指南
- PID调节深入解析:从入门到精通
- 数字水印技术:保护版权的新防线
- 8位数码管显示24小时制数字电子钟程序设计
- Mhdd免费版详细使用教程:硬盘检测与坏道屏蔽
- 操作系统期末复习指南:进程、线程与系统调用详解
- Cognos8性能优化指南:软件参数与报表设计调优
- Cognos8开发入门:从Transformer到ReportStudio
- Cisco 6509交换机配置全面指南
- C#入门:XML基础教程与实例解析
- Matlab振动分析详解:从单自由度到6自由度模型
- Eclipse JDT中的ASTParser详解与核心类介绍
- Java程序员必备资源网站大全