Я использую запрос POST с телом для динамического создания указанного файла на стороне сервера и передачи его клиенту в качестве ответа. Проблема на стороне клиента заключается в том, что файл загружается в объект ответа (кэш-память браузера, предположим, как временный файл) вместо жесткого диска ПК.Force browser загрузить большой файл
Как передать поток байтов непосредственно для браузера, чтобы обрабатывать и направлять его в папку/Downloads или куда пользователь загрузил файлы?
Размер файла действительно большой, и на жестком диске гаджета недостаточно места для его создания и предоставления ссылки для запроса GET. Поэтому мне нужно создать его на лету и передать клиенту как ответ POST.
Прямо сейчас я написал свой код в Angular, но язык не имеет большого значения. Я хотел бы понять, как браузер справляется с ситуацией.
Когда я выполняю HTTP-запрос, я уверен, что браузер что-то делает с ним, прежде чем он будет передан в сокет. И я уверен, что браузер делает что-то с полученным запросом, прежде чем передать его фрагменту кода, который выполнил запрос.
Я имею в виду, можете ли вы только установить заголовки ответов, чтобы браузер загрузил файл в/Downloads? Что происходит тогда с ожидающим HTTP-запросом, если пакеты «украдены» браузером? Или когда заголовки ответов поступают в объект ответа, можете ли вы каким-либо образом уведомить браузер о том, что тело ответа является файловым потоком байтов, который мы хотим загрузить в/Загрузки?
И у меня есть возможность изменить код сервера.
EDIT Более подробное объяснение:
Мой сервер посылает файл 5GB клиенту. Вместо того, чтобы просто получать этот файл во временной памяти браузера, я хотел бы сохранить файл непосредственно на жестком диске.
Но, естественно, браузер предотвращает прямой доступ к компьютеру пользователей, поэтому я не могу его там написать. Итак, как мне передать поток байтов для браузера, чтобы обрабатывать и сохранять в файл?
Вы не можете. Место загрузки определяется Клиентом. «Этот ПК/Загрузки» обычно используется по умолчанию в Windows, но Клиент может решить что-то еще. – PHPglue
Какова цель загрузки файла в определенную папку в пользовательской файловой системе? – guest271314
Проблема заключается в том, чтобы загрузить файл на ПК в целом, а не загружать его по определенному пути. Сейчас я могу загрузить файл только в кэш-память браузера, и он не загружается на жесткий диск ПК. Надеюсь, это немного прояснилось. – user3622167