Когда пользователь загружает большой файл (>250 МБ), он временно создается по физическому пути на сервере, загружается, а затем должен быть удален из физического пути на сервере.
Проблема в том, что я не могу удалить файл до того, как пользователь завершит загрузку, и поэтому мне нужен способ узнать, когда этот процесс будет завершен.
В настоящее время я использую метод, предложенный Microsoft для загрузки больших файлов в Blazor-Server, с некоторыми дополнениями, например:
Код: Выделить всё
await module.InvokeVoidAsync("triggerFileDownload", fileName, urlFilePath);
Код: Выделить всё
const anchorElement = document.createElement('a');
if (typeof anchorElement.download === 'undefined') {
window.location = url;
}
else {
anchorElement.href = url;
if (triggerFileDownload) {
anchorElement.download = fileName ?? '';
}
anchorElement.target = '_blank';
document.body.appendChild(anchorElement);
anchorElement.click();
document.body.removeChild(anchorElement);
}
JavaScript Interop не ожидает загрузки. Как только элемент привязки удаляется из тела, C# берет на себя управление и продолжает работу, поэтому удаление файла сразу после этого невозможно.
Подробнее здесь: https://stackoverflow.com/questions/785 ... s-finished