В нашем приложении для сервера на стороне сервера у нас есть возможность загружать файлы, используя javascript. Проблема в том, что когда я пытаюсь загрузить файл размером более 20 МБ, соединение закрывается и процесс загрузки прерывается.
И в браузере отображается сообщение:
Попытка переподключенияна сервер ...
И консоль браузера отображает ошибку:
blazor.server.js: 1 [2019-10-17T22: 47: 31.704Z] Ошибка: соединение отключено сerror 'Ошибка: WebSocket закрыт с кодом состояния: 1006 ().'.
Есть ли способ разрешить загрузку больших файлов?
Есть ли время ожидания, которое мне нужно увеличитьдля того, чтобы скачивать файлы размером более 20 МБ?
Я пробовал это без каких-либо улучшений:
services.AddServerSideBlazor (options => options.JSInteropDefaultCallTimeout = TimeSpan.FromSeconds (120));
JavaScript является:
function saveAsFile(filename, base64) {
var array = Base64Binary.decode(base64);
let blob = new Blob([array], {
type: 'application/octet-stream'
});
if (window.navigator && window.navigator.msSaveOrOpenBlob) {
window.navigator.msSaveOrOpenBlob(blob, name);
} else {
var link = document.createElement('a');
link.download = filename;
let url = URL.createObjectURL(blob);
link.download = filename;
link.href = url;
document.body.appendChild(link); // Needed for Firefox
link.click();
document.body.removeChild(link);
}
}
И javascript называется:
public static ValueTask<object> SaveAs(IJSRuntime jsRuntime, string filename, byte[] data) => jsRuntime.InvokeAsync<object>("saveAsFile", filename, Convert.ToBase64String(data));
Я надеюсь, что наши пользователи смогут загружать файлы размером до 150 МБ без отключения браузера.