Что сработало для меня:
У @FacesConverter
есть getAsObject
и getAsString
, я должен был убедиться, что оба возвращают конкретные объекты, ничего null
.
В моем классе, который используется selectOneMenu
и преобразователем, я убедился, что equals()
был перезаписан и правильно закодирован, на самом деле это была моя проблема, одна из проверок внутри equals()
wasn Нехорошо и неверно вернулось.
Важно изменить constantPath на "\\\\A\\B\\C\\D\\"
private string[] GetListOfDocumentLink()
{
string path = string.Empty;
string constantPath = "\\\\A\\B\\C\\D\\";
string folderName = string.Empty;
string year = string.Empty;
// determine folderName and year.
path = constantPath
+ Path.DirectorySeparatorChar.ToString()
+ folderName
+ Path.DirectorySeparatorChar.ToString()
+ year;
var filter = Berichtsnummer + "*.pdf";
string[] allFiles = Directory.GetFiles(path, filter);
return allFiles;
}
Теперь вы можете отправить метод path
- DownloadDocument
:
public async Task<IActionResult> DownloadDocument(string path)
{
byte[] berichtData = null;
FileInfo fileInfo = new FileInfo(path);
long berichtFileLength = fileInfo.Length;
FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read);
BinaryReader br = new BinaryReader(fs);
berichtData = br.ReadBytes((int)berichtFileLength);
return File(berichtData, MimeTypeHelper.GetMimeType("pdf"));
}
Локальный путь к файлу не "file: //". Вы можете обычно читать файл, используя локальный путь к файлу как
var path = "C:\\...";
, а затем отправлять содержимое в браузер клиента.
Если файл находится не на локальном компьютере, доступ к нему возможен только через сетевой ресурс. Затем вы можете использовать UNC-пути, например
var path = @"\\Server\Path\...";