У меня возникают проблемы с загрузкой файлов в ASP.NET MVC с помощью Visual Studio. Основная цель моего кода - хранить файлы лицензий в локальной файловой системе. Моя функция загрузки работает нормально, однако моя функция загрузки не работает. Поскольку база данных, которую я использую, не может хранить списки, я в настоящее время храню каждое имя файла в строке как таковой: «9-0.lic, 9-1.lic, 9-2.lic». Первое число (9) является первичным ключом для моей модели SoftwareLicense, а число после тире - номер файла лицензии (1, 2 и 3).Загрузка нескольких файлов; ASP.NET MVC C#
SoftwareLicense Модель:
public class SoftwareLicense
{
[Key]
public int SoftwareID { get; set; } // Properties of class SoftwareLicense
public int UserID { get; set; }
[ForeignKey("UserID")]
public virtual IntranetUser User { get; set; }
[Required(ErrorMessage = "Software title field is required.")]
[Display(Name = "Software Title")]
public string SoftwareName { get; set; }
[Required(ErrorMessage = "The software key field is required")]
[Display(Name = "Software Key")]
public string SoftwareKey { get; set; }
[Required(ErrorMessage = "The software price field is required")]
[Display(Name = "Software Price")]
public decimal Price { get; set; }
[Display(Name = "License File")]
public string LicenseFileName { get; set; }
[Display(Name = "File Path")]
public string LicenseFilePath { get; set; }
[Required(ErrorMessage = "The start date field is required.")]
[Display(Name = "Start Date")]
public DateTime StartDate { get; set; }
[Required(ErrorMessage = "The end date field is required")]
[Display(Name = "End Date")]
public DateTime EndDate { get; set; }
[Required(ErrorMessage = "The license type field is required")]
[Display(Name = "License Type")]
public string LicenseType { get; set; }
[Display(Name="Department Name")]
public string DepartmentName { get; set; }
[Required(ErrorMessage = "The notify time field is required")]
[Display(Name = "Notify Time")]
public int NotifyTime { get; set; }
[Required(ErrorMessage = "The email field is required")]
[Display(Name = "Entry Created By")]
public string Email { get; set; }
public bool Active { get; set; }
}
PreDownload Метод в SoftwareLicense Контроллер:
public ActionResult PreDownload(int ID)
{
SoftwareLicense softwareLicense = db.SoftwareLicenses.Find(ID);
var fileNames = softwareLicense.LicenseFileName.Split(',');
foreach(string fileName in fileNames)
{
if(fileName.Length > 1)
{
Download(fileName, softwareLicense.SoftwareName);
}
}
SetUserInfo();
return View("Details", softwareLicense);
}
Метод загрузки в SoftwareLicense контроллер:
public FileResult Download(string fileName, string licenseName)
{
string returnName = licenseName + '-' + fileName;
if((fileName != "") || (fileName != " "))
{
return File("C:/Users/heathera/Desktop/Licenses/" + fileName, MediaTypeNames.Application.Octet, returnName);
}
else
{
return null;
}
}
Если у кого есть какие-либо указатели или решения, пожалуйста, дайте мне знаете, я застрял на этом в течение дня или двух сейчас и не могу показаться выясните это. Кроме того, если у вас есть какие-либо указатели на любой из моих кодов, я всегда готов узнать о более умном программировании.
Заранее благодарен! Эндрю.
Что именно вы имеете в виду под "не работает"? – stuartd
Обратите внимание, что тег-контроллер-модель-контроллер предназначен для вопросов о шаблоне. Существует определенный тег для реализации ASP.NET-MVC. –
Если вы хотите вернуть несколько файлов, вам было бы лучше положить их в контейнер, например, zip-файл – stuartd