c# 实现文件上传下载功能的实例代码

yizhihongxing

实现文件上传和下载功能是很常见的需求,在C#中实现这样的功能并不困难。

上传文件

实现过程

选择一个合适的 form 布局,使得用户可以方便地选择文件,并设计好交互流程。

在后台代码中,需要通过 HttpPostedFileBase 类型接收表单上传的文件。可以通过以下代码来实现文件上传的操作:

[HttpPost]
public ActionResult Upload(HttpPostedFileBase file)
{
    if (file != null && file.ContentLength > 0) 
    {
        var fileName = Path.GetFileName(file.FileName);
        var path = Path.Combine(Server.MapPath("~/App_Data/uploads"), fileName);
        file.SaveAs(path);
    }
    return RedirectToAction("Index");
}

代码中的 HttpPostedFileBase 为ASP.NET MVC框架中的上传文件数据类型,通过判断文件是否为空以及大小是否大于0来确认上传的文件是否有效。接着通过 Path.GetFileName() 方法和 Server.MapPath() 方法生成保存路径。最后使用 SaveAs() 方法保存文件即可。

示例说明

以下是一个示例代码,其中包含了从表单上传文件、创建文件并保存至磁盘、用户拒绝上传操作等实例:

[HttpPost]
public ActionResult FileUpload(HttpPostedFileBase file)
{
    if (file != null && file.ContentLength > 0) 
    {
        try
        {
            var path = Path.Combine(Server.MapPath("~/App_Data/uploads"),
                       Path.GetFileName(file.FileName));
            file.SaveAs(path);
            ViewBag.Message = "File uploaded successfully";
        }
        catch (Exception ex)
        {
            ViewBag.Message = "Error: " + ex.Message.ToString();
        }
    }
    else
    {
        ViewBag.Message = "You have not specified a file.";
    }
    return View();
}

下载文件

实现过程

查找已经上传的文件并获取该文件的绝对路径。可以使用 FileResult() 方法,该方法可以将文件返回给客户端:

public FileResult Download(string fileName)
{
    var path = Path.Combine(Server.MapPath("~/App_Data/uploads"), fileName);
    return File(path, "application/force-download", Path.GetFileName(path));
}

该代码将指定文件路径,文件类型、以及文件名传递给 File() 方法作为参数,返回一个文件下载流,当客户端请求下载时将自动下载文件。

示例说明

以下代码给出了如何进行文件下载的实例代码,其中通过文件名参数获取已上传文件的绝对路径并且将文件返回:

public FileResult Download(string fileName)
{
    var path = Path.Combine(Server.MapPath("~/App_Data/uploads"), fileName);
    return File(path, "application/force-download", Path.GetFileName(path));
}

总结

以上,就是实现文件上传和下载的完整攻略,包括实现过程和示例代码。在我们进行开发过程中,还需要注意一些安全性问题,如文件扩展名白名单验证等等。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:c# 实现文件上传下载功能的实例代码 - Python技术站

(0)
上一篇 2023年5月31日
下一篇 2023年5月31日

相关文章

  • C#标识符的使用小结

    我将详细讲解 “C#标识符的使用小结”: 什么是标识符? 在C#编程语言中,标识符是用来表示各种元素名称(如变量、方法、命名空间等)的一个字符序列。合法的标识符必须符合以下规则: 标识符由字母、数字或下划线(_)组成 第一个字符必须是字母或下划线 标识符不能与C#语言的关键字(如if、for等)相同 标识符区分大小写 命名规范 在使用标识符时应遵循以下规范:…

    C# 2023年5月31日
    00
  • C#把DataTable导出为Excel文件

    关于如何使用C#把DataTable导出为Excel文件,下面是一份详细的攻略: 1. 添加依赖库 使用Excel需要引入Office.dll,如果没有安装Microsoft Office,可以通过NuGet安装Microsoft.Office.Interop.Excel: Install-Package Microsoft.Office.Interop.E…

    C# 2023年5月31日
    00
  • c#处理3种json数据的实例

    C#处理3种JSON数据的实例 在C#中,JSON是一种常见的数据格式,可以使用Newtonsoft.Json库来处理JSON数据。本文将提供3个示例,演示如何处理3种不同类型的JSON数据。 示例1:处理简单的JSON对象 以下示例演示如何处理简单的JSON对象: using Newtonsoft.Json.Linq; using System; name…

    C# 2023年5月15日
    00
  • C#内插字符串的简单使用

    C#内插字符串是一种方便的字符串构造方式,可以使用字符串插值(String interpolation)表达式 ${…} 显示地使用表达式计算值并将结果插入到字符串中。C# 6.0及以后版本支持内插字符串。 Step 1: 创建文本文件 首先需要创建一个C#代码文件(例如,使用Visual Studio或Visual Studio Code),并保存成 …

    C# 2023年6月7日
    00
  • MessagePack 和System.Text.Json 序列化和反序列化性能及对比分析

    以下是关于“MessagePack和System.Text.Json序列化和反序列化性能及对比分析”的完整攻略: 1. 序列化和反序列化 序列化和反序列化是将对象转换为字节流或将字节流转换为对象的过程。在实际开发中,我们经常需要将对象序列化为字节流,以便在网络上传输或存储到磁盘中。反序列化则是将字节流转换为对象,以便在应用程序中使用。 2. MessageP…

    C# 2023年5月12日
    00
  • C#读写EXCEL单元格的问题实现

    下面是“C#读写EXCEL单元格的问题实现”的完整攻略。 1. 安装依赖 首先需要在项目中安装 EPPlus 包,它是一款用于读写Excel文件的开源包。可以在NuGet中搜索 EPPlus 进行安装。 2. 读取Excel文件 假设我们有一个Excel文件,路径为 D:\test.xlsx,我们需要读取其中的内容。 2.1. 加载Excel文件 FileI…

    C# 2023年5月15日
    00
  • C#实现向函数传递不定参数的方法

    在C#中,可以通过定义可变长度参数列表的语法来实现向函数传递不定参数的方法。这个语法是通过在函数参数列表的最后一个参数前添加“params”关键字来实现的。 具体实现步骤如下: 定义函数时,在函数的参数列表中定义一个参数类型为可变长度参数数组的参数,关键字为“params”,并定义一个参数名。 例如: public static void PrintList…

    C# 2023年6月1日
    00
  • C#如何自动选择出系统中最合适的IP地址

    为了选择系统中最合适的IP地址,我们可以使用C#编写程序使用以下步骤: 获取所有可用的网络接口信息 在C#中,我们可以使用NetworkInterface.GetAllNetworkInterfaces()方法获取当前系统中所有的网络接口信息,该方法会返回一个NetworkInterface类型的数组。 以下是一个获取网络接口信息的示例代码: using S…

    C# 2023年6月7日
    00
合作推广
合作推广
分享本页
返回顶部