C#实现上传照片到物理路径,并且将地址保存到数据库的小例子

介绍

在 web 应用开发中,上传照片(或其他文件)是一项非常常见的任务。本文将介绍如何使用 C# 实现将用户上传的照片保存到服务器的物理路径,并将图片地址保存到数据库。这将会使用到 ASP.NET 和 SQL Server。

准备工作

在开始本文所述的实现之前,需要确保完成以下准备工作:

已安装 Visual Studio

已安装 SQL Server

已创建了一个数据库和一个表

在本例中,将创建一个名为 "PhotoUploader" 的数据库,并在其中创建一个名为 "Photos" 的表。表中将包含两列: "Id" 和 "ImagePath"。其中 "Id" 列是自增的 int 类型, "ImagePath" 列是 varchar 类型,用于保存图片的物理路径。

实现

1. 创建 ASP.NET 网站

打开 Visual Studio,并创建一个新的 ASP.NET 网站。名称为 "PhotoUploader",并将项目类型设置为 "Web Forms"。

接下来,右键单击项目名称,并选择 "添加" -> "新建文件夹"。将文件夹命名为 "Images",用于存储上传的图片。

2. 设计网页界面

添加一个 HTML 表单,用于上传图片。表单包含一个标题、一个文件选择框和一个提交按钮。

<h1>上传照片</h1>

<form id="form1" runat="server" enctype="multipart/form-data">

请选择要上传的照片:

<br />

<input type="file" name="fileUpload" id="fileUpload" />

<br />

<input type="submit" name="btnSubmit" value="上传" />

</form>

3. 创建后端代码

在 "CodeBehind" 文件夹下创建一个名为 "Default.aspx.cs" 的文件。在这个文件中添加代码用于处理用户上传的图片,并将图片地址保存到数据库。

4. 处理文件上传

处理文件上传需要使用 ASP.NET 的 "FileUpload" 控件。在第二步中的 HTML 代码中,已经创建了一个名为 "fileUpload" 的控件。在 Default.aspx.cs 文件中,添加以下代码用于处理文件上传:

protected void btnSubmit_Click(object sender, EventArgs e)

{

// 获取文件名

string fileName = Path.GetFileName(fileUpload.PostedFile.FileName);

// 将文件保存到服务器的物理位置

string filePath = Server.MapPath("~/Images/") + fileName;

fileUpload.PostedFile.SaveAs(filePath);

// 将文件路径保存到数据库

SaveImagePath(filePath);

}

上述代码中,首先获取用户上传的文件名。接下来,通过调用 "Server.MapPath" 方法将文件保存到服务器的物理位置。最后,将文件路径保存到数据库中。

5. 保存图片地址到数据库

为将图片地址保存到数据库中,需要使用 SQL Server。在 Default.aspx.cs 文件中,添加以下代码用于保存图片地址到数据库:

private void SaveImagePath(string imagePath)

{

string connStr = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;

string query = "INSERT INTO Photos (ImagePath) VALUES (@ImagePath)";

SqlConnection conn = new SqlConnection(connStr);

SqlCommand cmd = new SqlCommand(query, conn);

cmd.Parameters.AddWithValue("@ImagePath", imagePath);

conn.Open();

cmd.ExecuteNonQuery();

conn.Close();

}

上述代码中,首先读取数据库连接字符串。接下来,创建一个 SQL 语句用于将图片地址插入到数据库中。然后,使用 SqlConnection 和 SqlCommand 对象执行 SQL 语句。最后,关闭数据库连接。

6. 完整代码

完成的 Default.aspx.cs 文件代码如下所示:

using System;

using System.Configuration;

using System.Data.SqlClient;

using System.IO;

public partial class _Default : System.Web.UI.Page

{

protected void Page_Load(object sender, EventArgs e)

{

}

protected void btnSubmit_Click(object sender, EventArgs e)

{

// 获取文件名

string fileName = Path.GetFileName(fileUpload.PostedFile.FileName);

// 将文件保存到服务器的物理位置

string filePath = Server.MapPath("~/Images/") + fileName;

fileUpload.PostedFile.SaveAs(filePath);

// 将文件路径保存到数据库

SaveImagePath(filePath);

}

private void SaveImagePath(string imagePath)

{

string connStr = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;

string query = "INSERT INTO Photos (ImagePath) VALUES (@ImagePath)";

SqlConnection conn = new SqlConnection(connStr);

SqlCommand cmd = new SqlCommand(query, conn);

cmd.Parameters.AddWithValue("@ImagePath", imagePath);

conn.Open();

cmd.ExecuteNonQuery();

conn.Close();

}

}

总结

本文介绍了如何使用 C# 在 ASP.NET 中实现上传照片的功能,并将图片地址保存到数据库中。这是一个非常有用的功能,在实际应用中也是经常使用的。通过学习本文,您可以掌握处理文件上传以及使用 SQL Server 插入记录的基础知识。

后端开发标签