当我们需要在 ASP.NET 应用程序中实现文件上传时,可以使用 FileUpload 控件来方便地实现这一功能。下面将介绍在 ASP.NET 2.0 中如何使用 FileUpload 控件上传文件。
1. 创建页面和控件
首先,需要在 ASP.NET 页面中创建一个 FileUpload 控件以及一个 Button 控件用于触发上传事件。在 ASP.NET 2.0 中,可以使用以下代码实现控件的创建:
<asp:FileUpload ID="fileUploadControl" runat="server" /><br />
<asp:Button ID="btnUpload" runat="server" Text="上传文件" OnClick="btnUpload_Click" />
2. 编写上传文件的代码
当用户选择了上传的文件后,可以通过编写后台处理程序来完成文件上传的任务。为此,需要添加以下代码:
protected void btnUpload_Click(object sender, EventArgs e)
{
// 获取上传的文件名
string filename = Path.GetFileName(fileUploadControl.FileName);
try
{
// 检查文件是否为有效的文件类型
if (fileUploadControl.HasFile && IsValidFileType(fileUploadControl.PostedFile.FileName))
{
// 设置上传的文件路径
string filePath = Server.MapPath("~/uploads/") + filename;
// 保存文件到服务器
fileUploadControl.SaveAs(filePath);
// 显示上传成功的消息
lblMessage.Text = "文件上传成功!";
}
else
{
// 显示上传失败的消息
lblMessage.Text = "无法上传该文件类型!";
}
}
catch (Exception ex)
{
// 显示上传失败的消息
lblMessage.Text = "文件上传失败!" + ex.Message;
}
}
在上述代码中,我们首先获取了上传的文件名,然后检查其是否为有效的文件类型。如果是有效的文件类型,我们就将文件保存到服务器上,否则显示无法上传的消息。
为了实现文件类型的检测,可以添加以下代码:
private bool IsValidFileType(string fileName)
{
string[] validFileTypes = { "bmp", "gif", "jpg", "jpeg", "png" };
string ext = Path.GetExtension(fileName).ToLower();
return validFileTypes.Contains(ext.Substring(1));
}
在上述代码中,我们定义了一个有效的文件类型数组,然后获取了上传文件的扩展名,检查其是否包含在有效的文件类型数组中。
3. 测试 FileUpload 控件的使用
为了在 ASP.NET 网站中实现文件上传功能,可以按照以下步骤操作:
- 将上述代码添加到 ASP.NET 页面中。
- 将 ASP.NET 页面保存并部署到 Web 服务器上。
- 在浏览器中访问 ASP.NET 页面。
- 选择一个包含有效文件类型的文件并上传。
- 在 Web 页面中查看上传文件的结果。
4. 使用示例
示例一
将上传的文件保存到物理路径的 uploads 文件夹中,并提示上传成功或失败的信息:
<asp:FileUpload ID="fileUploadControl" runat="server" /><br />
<asp:Button ID="btnUpload" runat="server" Text="上传文件" OnClick="btnUpload_Click" />
<br /><br />
<asp:Label ID="lblMessage" runat="server" ForeColor="Red" />
protected void btnUpload_Click(object sender, EventArgs e)
{
string filename = Path.GetFileName(fileUploadControl.FileName);
try
{
if (fileUploadControl.HasFile && IsValidFileType(fileUploadControl.PostedFile.FileName))
{
string filePath = Server.MapPath("~/uploads/") + filename;
fileUploadControl.SaveAs(filePath);
lblMessage.Text = "文件上传成功!";
}
else
{
lblMessage.Text = "无法上传该文件类型!";
}
}
catch (Exception ex)
{
lblMessage.Text = "文件上传失败!" + ex.Message;
}
}
private bool IsValidFileType(string fileName)
{
string[] validFileTypes = { "bmp", "gif", "jpg", "jpeg", "png" };
string ext = Path.GetExtension(fileName).ToLower();
return validFileTypes.Contains(ext.Substring(1));
}
示例二
将上传的文件保存到数据库中:
<asp:FileUpload ID="fileUploadControl" runat="server" /><br />
<asp:Button ID="btnUpload" runat="server" Text="上传文件" OnClick="btnUpload_Click" />
<br /><br />
<asp:Label ID="lblMessage" runat="server" ForeColor="Red" />
protected void btnUpload_Click(object sender, EventArgs e)
{
string filename = Path.GetFileName(fileUploadControl.FileName);
try
{
if (fileUploadControl.HasFile && IsValidFileType(fileUploadControl.PostedFile.FileName))
{
// 将文件读取为二进制数据
byte[] fileData = new byte[fileUploadControl.PostedFile.ContentLength];
fileUploadControl.PostedFile.InputStream.Read(fileData, 0, fileUploadControl.PostedFile.ContentLength);
// 将文件存储到数据库中
string connectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
using (SqlConnection connection = new SqlConnection(connectionString))
{
SqlCommand cmd = new SqlCommand("INSERT INTO Files (Filename, FileData) VALUES (@Filename, @FileData)", connection);
cmd.Parameters.AddWithValue("@Filename", filename);
cmd.Parameters.AddWithValue("@FileData", fileData);
connection.Open();
cmd.ExecuteNonQuery();
}
lblMessage.Text = "文件上传成功!";
}
else
{
lblMessage.Text = "无法上传该文件类型!";
}
}
catch (Exception ex)
{
lblMessage.Text = "文件上传失败!" + ex.Message;
}
}
private bool IsValidFileType(string fileName)
{
string[] validFileTypes = { "bmp", "gif", "jpg", "jpeg", "png" };
string ext = Path.GetExtension(fileName).ToLower();
return validFileTypes.Contains(ext.Substring(1));
}
在上述代码中,我们将文件读取为二进制数据,并使用 SQL Server 数据库将文件存储到名为 Files 的数据库表中。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:在ASP.NET 2.0中操作数据之五十二:使用FileUpload上传文件 - Python技术站