Uploading a PDF to a network share drive in a .NET Core MVC application involves creating a view with a file upload form, handling the file upload in the controller, and saving the file to the network share directory. Here are the steps:
-
Create the View:
- Add a new view with a file upload form.
<!-- Views/Home/Upload.cshtml -->
@*
For more information on enabling MVC for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860
*@
@{
@model UploadViewModel
<form asp-action="Upload" asp-controller="Home" method="post" enctype="multipart/form-data">
<div class="form-group">
<label for="File">Upload PDF</label>
<input type="file" class="form-control" id="File" name="File" />
</div>
<button type="submit" class="btn btn-primary">Upload</button>
</form>
@if (ViewBag.Message != null)
{
<div class="alert alert-info">
@ViewBag.Message
</div>
}
}
2. Create the View Model:
- Add a view model to handle the uploaded file.
3. Create the Controller:
- In the controller, handle the file upload and save it to the network share directory.
// Controllers/HomeController.cs
using fileUploadCoreMvc.Models;
using Microsoft.AspNetCore.Mvc;
using System.Diagnostics;
using System;
using System.IO;
using System.Threading.Tasks;
namespace fileUploadCoreMvc.Controllers
{
public class HomeController : Controller
{
private readonly ILogger<HomeController> _logger;
public HomeController(ILogger<HomeController> logger)
{
_logger = logger;
}
public IActionResult Index()
{
return View();
}
public IActionResult Privacy()
{
return View();
}
[ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
public IActionResult Error()
{
return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
}
[HttpGet]
public IActionResult Upload()
{
return View();
}
[HttpPost]
public async Task<IActionResult> Upload(UploadViewModel model)
{
if (model.File != null && model.File.Length > 0)
{
try
{
string fileName = Path.GetFileName(model.File.FileName);
string networkPath = @"\\172.16.20.62\AppData_MMMSY\" + fileName;
using (var stream = new FileStream(networkPath, FileMode.Create))
{
await model.File.CopyToAsync(stream);
}
ViewBag.Message = "File uploaded successfully!";
}
catch (Exception ex)
{
ViewBag.Message = "Error: " + ex.Message;
}
}
else
{
ViewBag.Message = "Please select a file to upload.";
}
return View();
}
}
}