Я пытаюсь убедиться, что могу загрузить файл, если он имеет длинное имя.Это класс, который я использую.
public class ShortFileName
{
[DllImport("kernel32.dll", CharSet = CharSet.Auto)]
public static extern int GetShortPathName(
[MarshalAs(UnmanagedType.LPTStr)]
string path,
[MarshalAs(UnmanagedType.LPTStr)]
StringBuilder shortPath,
int shortPathLength
);
}
Это код в моем контроллере, который осуществляет загрузку.
public ActionResult Download(string path, string fileName)
{
try
{
StringBuilder shortPath = new StringBuilder(255);
ShortFileName.GetShortPathName(path, shortPath, shortPath.Capacity);
byte[] fileBytes = System.IO.File.ReadAllBytes(shortPath.ToString());
return File(fileBytes, System.Net.Mime.MediaTypeNames.Application.Octet, fileName);
}
catch (Exception)
{
throw;
}
}
shortPath имеет значение NULL, если путь к файлу слишком длинный.