powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / загрузка большого файла спринг
23 сообщений из 23, страница 1 из 1
загрузка большого файла спринг
    #39581185
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
собссно вопрос - мне надо в свое приложение загрузить файл в 1 гиг, и параллельно же его выгрузить на сторонний файл-сервер работающий так же по хттп. если я буду перехватывать инпут стрим который получаю от клиента и следом его перебрасывать в стрим который занимается отправлением в другой сервис - у меня же оперативка не кончится?
...
Рейтинг: 0 / 0
загрузка большого файла спринг
    #39581200
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT,

Если правильно перехватить стрим и копировать через буфер в целевой стрим, то память не кончится. Другое дело что большинство web фреймверков таки стараются файл на диске сначала сохранить, а не отдавать HTTP IO Stream
...
Рейтинг: 0 / 0
загрузка большого файла спринг
    #39581218
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: java
1.
2.
3.
4.
5.
    @RequestMapping(value = "/video/upload",
            method = RequestMethod.POST, consumes = MediaType.MULTIPART_FORM_DATA_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
    public ResponseEntity uploadVideo(@RequestParam(value = "file", required = true) MultipartFile file) throws Exception {

        String streamId = streamingService.uploadVideoStream(file.getBytes());



Код: java
1.
2.
3.
4.
5.
    @RequestMapping(value = "/video/upload",
            method = RequestMethod.POST, consumes = MediaType.MULTIPART_FORM_DATA_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
    public ResponseEntity uploadVideo(@RequestParam(value = "file", required = true) MultipartFile file) throws Exception {

        String streamId = streamingService.uploadVideoStream(file.getInputStream());



в этих двух примерах где и что будет использоваться? я так понимаю, первый вариант точно будет как минимум, в память сохранять. не?
...
Рейтинг: 0 / 0
загрузка большого файла спринг
    #39581227
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT,

Код: java
1.
2.
3.
spring.http.multipart.location=
spring.http.multipart.max-file-size=1GB
spring.http.multipart.max-request-size=1GB
...
Рейтинг: 0 / 0
загрузка большого файла спринг
    #39581231
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я так понимаю, если имплементируется
Код: java
1.
StandardMultipartHttpServletRequest

то он сам инпут в аутпут стрим копирует
Код: java
1.
Part
...
Рейтинг: 0 / 0
загрузка большого файла спринг
    #39581233
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ставлю на то, что в обоих вариантах будет сначала все сбрасываться в файл.
Иначе не представляю как сервер сможет правильно сделать HttpServletRequest.getParts()
...
Рейтинг: 0 / 0
загрузка большого файла спринг
    #39581234
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UsmanandreykaT,

Код: java
1.
2.
3.
spring.http.multipart.location=
spring.http.multipart.max-file-size=1GB
spring.http.multipart.max-request-size=1GB



это понятно.. но тут вопрос куда будет этот 1гб утилизироваться? в память? или же просто будет перебрасывать стрим и сразу его перенаправлять дальше?
...
Рейтинг: 0 / 0
загрузка большого файла спринг
    #39581239
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander A. SakСтавлю на то, что в обоих вариантах будет сначала все сбрасываться в файл.
Иначе не представляю как сервер сможет правильно сделать HttpServletRequest.getParts()

по ходу да. партс врайт делает запись на диск:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
    public void write(String fileName) throws IOException {
        File file = new File(fileName);
        if(!file.isAbsolute()) {
            file = new File(this.location, fileName);
        }

        try {
            this.fileItem.write(file);
        } catch (Exception var4) {
            throw new IOException(var4);
        }
    }
...
Рейтинг: 0 / 0
загрузка большого файла спринг
    #39581253
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaTUsmanandreykaT,

Код: java
1.
2.
3.
spring.http.multipart.location=
spring.http.multipart.max-file-size=1GB
spring.http.multipart.max-request-size=1GB




это понятно.. но тут вопрос куда будет этот 1гб утилизироваться? в память? или же просто будет перебрасывать стрим и сразу его перенаправлять дальше?
Код: java
1.
spring.http.multipart.file-size-threshold=0

Код: plaintext
1.
2.
3.
/**
  * Threshold after which files will be written to disk. Values can use the suffixes
  * "MB" or "KB" to indicate megabytes or kilobytes respectively.
  */

По умолчанию значение равно 0.
Не знаю будет ли перебрасываться/перенаправляться
стрим или нет, но записываться на диск, как я понял, будет сразу.
...
Рейтинг: 0 / 0
загрузка большого файла спринг
    #39581254
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Usman
Код: java
1.
spring.http.multipart.location=

Код: plaintext
1.
Specifies the directory where uploaded files will be stored. 
When not specified, a temporary directory will be used
...
Рейтинг: 0 / 0
загрузка большого файла спринг
    #39581262
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да. по ходу всегда будет временный фолдер использоваться. итого выгрузка большого файла только частями..
...
Рейтинг: 0 / 0
загрузка большого файла спринг
    #39581279
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тогда другой вопрос - а как получать файл частями. но реально частями, от фронта чтоб с каждой частью я мог отдельно что-то сделать? я знаю что это возможно. можно влоб решить. но это криво.
...
Рейтинг: 0 / 0
загрузка большого файла спринг
    #39581281
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
например так: MultipartHttpServletRequest.getFileNames() )) - т.е. браузер в имени файла будет кодировать его кусочки и номера ))
...
Рейтинг: 0 / 0
загрузка большого файла спринг
    #39581362
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
небольшой ресерч дал информацию что аплоад в таких случаях делают раздельно позапросно передавая инфу либо в параметрах реквеста либо в хедерах о том какой парт летит.
т.е. если мы делаем парт по 10 мб, и шлем файл в гиг - будет сто постов.
впрочем, не уверен, что это бест практис.
...
Рейтинг: 0 / 0
загрузка большого файла спринг
    #39581389
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT, а тебе интересны только решения релевантные к Spring?

Или можно другие посмотреть?
...
Рейтинг: 0 / 0
загрузка большого файла спринг
    #39582166
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну я думал что может у спринга есть что-то на эту тему готовое.. оказалось нету ничего. все грузят в лупе кусками 1 кусок= 1 пост. ну и ладно.
...
Рейтинг: 0 / 0
загрузка большого файла спринг
    #39582167
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Когда Spring появился - он был просто клеем для склеивания компонент в приложение.

Сегодня на него накручивают роли и ответственности которые должен делать прикладной код
или библиотека.
...
Рейтинг: 0 / 0
загрузка большого файла спринг
    #39582196
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaTтогда другой вопрос - а как получать файл частями. но реально частями, от фронта чтоб с каждой частью я мог отдельно что-то сделать? я знаю что это возможно. можно влоб решить. но это криво.см. FileReader
...
Рейтинг: 0 / 0
загрузка большого файла спринг
    #39582204
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaTну я думал что может у спринга есть что-то на эту тему готовое.. оказалось нету ничего. все грузят в лупе кусками 1 кусок= 1 пост. ну и ладно.вот и вопрос был, почему ты именно у спринга ищешь.
Это как в ЖЭКе спрашивать какой пылесос купить).
...
Рейтинг: 0 / 0
загрузка большого файла спринг
    #39582217
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне кажется автор может спокойно грузить 1гиг в temp и не париться.

Насколько я понимаю томик возник из опасения что при конвейерной обработке возникнет OutOfMemory.
...
Рейтинг: 0 / 0
загрузка большого файла спринг
    #39582350
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IMHO у автора не совсем web-приложение, а скорее некое подобие proxy. В данном случае, желание уйти от промежуточного хранения и обработки совершенно понятна. И из-за ресурсов и из-за скорости работы (latency).

и параллельно же его выгрузить на сторонний файл-сервер работающий так же по хттп
...
Рейтинг: 0 / 0
загрузка большого файла спринг
    #39582358
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev,
В вебе просто передаётся ссылка на ресурс. Без перекачивания байтов.
...
Рейтинг: 0 / 0
загрузка большого файла спринг
    #39582837
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Leonid Kudryavtsev,
В вебе просто передаётся ссылка на ресурс. Без перекачивания байтов.
ну в общем да. так и сделал в итоге. переделегировал )) фрагментацией и заливкой файла на конечный пункт будут заниматься фанаты джаваскрипта. одна из причин почему изначально было желание пропускать трафик через себя - не показывать ресурс для аплоада и параметры которые сидят в линке приходящей со стороннего сервиса.
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / загрузка большого файла спринг
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]