以下是一个使用ASP.NET Core 2.1的简单示例,演示如何在同一页上上传文件并显示上传的文件。
首先,在你的ASP.NET Core 2.1项目中,创建一个名为"UploadFile"的控制器:
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using System.IO;
using System.Threading.Tasks;
namespace YourNamespace.Controllers
{
public class UploadFileController : Controller
{
private readonly IWebHostEnvironment _environment;
public UploadFileController(IWebHostEnvironment environment)
{
_environment = environment;
}
[HttpGet]
public IActionResult Index()
{
return View();
}
[HttpPost]
public async Task Index(IFormFile file)
{
if (file != null && file.Length > 0)
{
var filePath = Path.Combine(_environment.WebRootPath, "uploads", file.FileName);
using (var stream = new FileStream(filePath, FileMode.Create))
{
await file.CopyToAsync(stream);
}
ViewBag.Message = "文件上传成功!";
}
else
{
ViewBag.Message = "请选择一个文件。";
}
return View();
}
}
}
下一步是创建一个名为"Index.cshtml"的视图,用于显示文件上传表单和上传后的消息:
@{
ViewData["Title"] = "文件上传";
}
文件上传
@if (ViewBag.Message != null)
{
@ViewBag.Message
}
最后,在"Startup.cs"文件中,将路由配置为使用"UploadFile"控制器的"Index"动作:
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
namespace YourNamespace
{
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
services.AddControllersWithViews();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
}
}
}
完成上述步骤后,你的ASP.NET Core 2.1应用程序就能够在同一页上上传文件并显示上传的文件了。