.net webapi 上传文件到服务器

.NET WebAPI 实现文件上传教程
本文介绍了如何使用.NET WebAPI实现文件上传功能,包括前端HTML表单的设置和后端C#接收并保存文件的代码实现。

一、前端代码

<html>
	<body>
		<title>导入文件</title>
	</body>
	<head>
		<form method="post" enctype="multipart/form-data" id="form">
			名称:<input type="file" name="name" id="name" />
			<input type="button" id="saves" value="提交" />
		</form>
		
		<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.js"></script>
		<script>
			$("#saves").on("click", function (e) {
				var form =document.getElementById("form");
				var data = new FormData(form);
				$.ajax({
					url: "/Upload",
					type: "post",
					dataType: "json",
					contentType: false,
					processData: false,
					headers: { 'X-Custom-Source': 'browser', "Authorization":"Bearer token"},
					data: data,
					success: function (res) {
					    // 导入成功
					}
				});
			});
		</script>
	</head>
</html>

 二、后端代码

/// <summary>
/// 上传文件到服务器
/// </summary>
/// <param name="files">文件</param>
/// <returns></returns>
[HttpPost]
public JsonResult Upload(IFormCollection files)
{
    try
    {
        // 服务器将要存储文件的路径
        var Folder = AppDomain.CurrentDomain.BaseDirectory + "/wwwroot/Upload/";
        if (Directory.Exists(Folder) == false)//如果不存在就创建file文件夹
        {
            Directory.CreateDirectory(Folder);
        }

        FormFileCollection fileCollection = (FormFileCollection)files.Files;
        foreach (IFormFile file in fileCollection)
        {
            StreamReader reader = new StreamReader(file.OpenReadStream());
            String content = reader.ReadToEnd();
            String name = file.FileName; // 获取文件名
            string pathName = Path.GetExtension(name); // 获取后缀名
            if (pathName != ".xlsx")
            {
                return Json(new
                {
                    Message = "不支持该格式",
                    Success = false
                });
            }

            String filename = Folder + Guid.NewGuid().ToString().Replace("-", "") + pathName; // 生成新的文件名,唯一不重复
            if (System.IO.File.Exists(filename))
            {
                System.IO.File.Delete(filename);
            }
            using (FileStream fs = System.IO.File.Create(filename))
            {
                // 复制文件
                file.CopyTo(fs);
                // 清空缓冲区数据
                fs.Flush();
            }
        }

        return Json(new
        {
            Message = "成功",
            Success = true
        });
    }
    catch (Exception ex)
    {
        return Json(new
        {
            Message = ex.Message,
            Success = false
        });
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值