用Html5与Asp.net MVC上传多个文件的实现代码


在Html5与Asp.net MVC中实现多个文件的上传,你需要在前端HTML中使用``来允许用户选择多个文件,然后在Asp.net MVC的Controller中处理这些文件。以下是一个基本的实现示例。

### 前端HTML


<!DOCTYPE html>
<html>
<head>
    <title>Multiple File Upload</title>
</head>
<body>
    <form action="/Home/UploadFiles" method="post" enctype="multipart/form-data">
        <input type="file" name="files" multiple>
        <input type="submit" value="Upload">
    </form>
</body>
</html>

注意,`enctype="multipart/form-data"`是必需的,因为它告诉表单数据应该被编码为`multipart/form-data`,这是上传文件时使用的编码类型。

### Asp.net MVC Controller

在Asp.net MVC的Controller中,你可以使用`HttpPostedFileBase[]`或`IEnumerable`来接收多个文件。以下是一个示例Controller方法,展示了如何接收并处理这些文件:


using System;
using System.IO;
using System.Web.Mvc;

namespace YourNamespace.Controllers
{
    public class HomeController : Controller
    {
        // POST: /Home/UploadFiles
        [HttpPost]
        public ActionResult UploadFiles(IEnumerable<HttpPostedFileBase> files)
        {
            try
            {
                foreach (var file in files)
                {
                    if (file != null && file.ContentLength > 0)
                    {
                        var fileName = Path.GetFileName(file.FileName);
                        var path = Path.Combine(Server.MapPath("~/Uploads"), fileName);
                        file.SaveAs(path);
                    }
                }

                // 可以在这里添加更多的逻辑,比如保存文件信息到数据库等

                return Content("Files uploaded successfully.");
            }
            catch (Exception ex)
            {
                return Content($"An error occurred: {ex.Message}");
            }
        }
    }
}

在这个示例中,所有上传的文件都会被保存到服务器的`~/Uploads`目录下。请注意,你需要确保这个目录在你的服务器上存在,并且你的应用程序有足够的权限去写入文件。

另外,请注意,出于安全考虑,你应该对上传的文件进行适当的验证,比如检查文件类型、大小等,以防止潜在的安全风险,如恶意文件上传。

以上就是在Html5与Asp.net MVC中实现多个文件上传的基本方法。