powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / js file uploader
18 сообщений из 18, страница 1 из 1
js file uploader
    #39942170
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не посоветуете, где почитать про сабж?
Нужно прикрутить на форму возможность загрузки файла на сервер.
Кроссбраузерностью можно не заморачиваться, я ориентируюсь на HTML5 и современные браузеры.
На клиентской стороне примеров с использованием FileList/FileReader достаточно. Файлы могут быть размером до 10-20 МБ, поэтому желательно отправку разбивать на блоки.
Но вот что должно быть на серверной стороне? Как отслеживать прогресс и отмену отправки?
...
Рейтинг: 0 / 0
js file uploader
    #39942182
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.,

... если речь об ASP.NET (напр., Core), то HttpRequest.Form.Files, например .... или IFormFile
...
Рейтинг: 0 / 0
js file uploader
    #39942184
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет, на сервере Apache+PHP.
Как я понимаю, если отправлять файл одним куском, то на серверной стороне ничего думать не надо — если в серверный код пришел запрос, то он уже со всей информацией. Но это не подходит для больших файлов.
А при отправке несколькими кусками и сборкой на серверной стороне будет куча нюансов, и чтобы не собирать все "грабли", я бы хотел почитать о них заранее.
...
Рейтинг: 0 / 0
js file uploader
    #39942207
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.,

зачем кусками, если до 20 МБ?
Прекрасно на клиенте можно отслеживать и прогресс, и отмену.

Читайте документацию по XMLHttpRequest: события progress и abort.
...
Рейтинг: 0 / 0
js file uploader
    #39942214
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос не про XMLHttpRequest, там я разберусь.
Меня больше интересует, что делать на сервере.
Мне казалось, что 20 МБ многовато для отправки одним куском.
По умолчанию в PHP стоит ограничение на 2 МБ — или по нынешним временам его можно увеличить?
...
Рейтинг: 0 / 0
js file uploader
    #39942215
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.
Вопрос не про XMLHttpRequest, там я разберусь.
Меня больше интересует, что делать на сервере.
Мне казалось, что 20 МБ многовато для отправки одним куском.
По нынешним временам фоточка может весить под 30 МБ.

Alibek B.
По умолчанию в PHP стоит ограничение на 2 МБ — или по нынешним временам его можно увеличить?
Даже на sql.ru разрешено картинки до 5 МБ :)

На сервере надо проверять, что не больше 20 МБ.
А также имя файла, его размер и контрольную сумму, чтобы не грузили по десять раз одно и тоже.
Ну и на безопасность.
...
Рейтинг: 0 / 0
js file uploader
    #39942254
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий Мух
По нынешним временам фоточка может весить под 30 МБ.

Я не столько про размер файла, сколько про размер блока.
Не многовато ли отправлять 20МБ в одном POST-запросе?
Я считал, что большие файлы отправляют на сервер блоками и склеивают уже на сервере.
...
Рейтинг: 0 / 0
js file uploader
    #39942265
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.
По умолчанию в PHP стоит ограничение на 2 МБ — или по нынешним временам его можно увеличить?
нада читать мануалы
хоть 100м
...
Рейтинг: 0 / 0
js file uploader
    #39942267
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.
Не многовато ли отправлять 20МБ в одном POST-запросе?

С приходом HTML5 лимит на загрузку файла с 2GB подняли до 4GB.
...
Рейтинг: 0 / 0
js file uploader
    #39943205
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то не выходит каменный цветок.
Отправляю файл так:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
let $inp = document.getElementById('app-file-input');
let $file = $inp.files[0];
let $fd = new FormData();
$fd.append('attach', $file);
...
let $xhr = new XMLHttpRequest();
$xhr.addEventListener('load', upload_callback);
$xhr.addEventListener('timeout', upload_callback);
$xhr.addEventListener('error', upload_callback);
$xhr.addEventListener('abort', upload_callback);
$xhr.upload.addEventListener('progress', upload_callback);
$xhr.upload.addEventListener('timeout', upload_callback);
$xhr.upload.addEventListener('error', upload_callback);
$xhr.upload.addEventListener('abort', upload_callback);
$xhr.timeout = 120*1000;
...
$xhr.open('POST', '/upload', true);
$xhr.send($fd);



Отправляю небольшой файл (меньше 100 кБ), однако при выполнении $xhr.send почти сразу получаю ошибку 413 (Request Entity Too Large).
При этом если обновить страницу и попытаться еще раз отправить файл — он отправляется успешно и доходит до сервера.
И даже если отправлять файл побольше (например 6 МБ), то получается точно так же — при первой попытке ошибка 413, но если ее повторить через некоторое время, то все успешно.
...
Рейтинг: 0 / 0
js file uploader
    #39943228
voraa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alibek B.,
Наверно надо покопаться в настройках сервера и php (если он используется)
Посмотрите, может поможет
https://www.keycdn.com/support/413-request-entity-too-large
...
Рейтинг: 0 / 0
js file uploader
    #39943235
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Навряд-ли причина в конфигурации веб-сервера — тогда бы файлы вообще не отправлялись.
А у меня отправляются со второго раза, хоть большие, хоть маленькие.
LimitRequestBody не задан, лимиты post_max_size и file_max_size выставлены на 20 МБ.
...
Рейтинг: 0 / 0
js file uploader
    #39943290
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.,

что значит навряд-ли? Это же ответ сервера
https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/413
...
Рейтинг: 0 / 0
js file uploader
    #39943313
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я имею ввиду, что навряд-ли причина в опциях веб-сервера (LimitRequestBody из апача или post_max_size из PHP).
Если бы срабатывало это ограничение, оно бы срабатывало всегда.
...
Рейтинг: 0 / 0
js file uploader
    #39943415
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Причину вроде бы нашел:
Код: plaintext
1.
2.
request body exceeds maximum size (131072) for SSL buffer
could not buffer message body to allow SSL renegotiation to proceed

Что с этим делать, пока не знаю.
Никто не сталкивался?
...
Рейтинг: 0 / 0
js file uploader
    #39943424
voraa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alibek B.,

google

www.google.com/search?q=request body exceeds maximum size (131072) for SSL buffer&oq=request body exceeds maximum size (131072) for SSL buffer&aqs=chrome..69i57.1197j0j7&sourceid=chrome&ie=UTF-8]https://www.google.com/search?q=request body exceeds maximum size (131072) for SSL buffer&oq=request body exceeds maximum size (131072) for SSL buffer&aqs=chrome..69i57.1197j0j7&sourceid=chrome&ie=UTF-8

И меняешь настройки сервера для SSL
Особенно SSLRenegBufferSize
...
Рейтинг: 0 / 0
js file uploader
    #39943432
voraa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Короче, хрен знает как тут ссылку на запрос вставить.
В гугле ищешь
"request body exceeds maximum size (131072) for SSL buffer"
...
Рейтинг: 0 / 0
js file uploader
    #39943436
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По тексту ошибки я искал, но выходило все не то.
За подсказку SSLRenegBufferSize спасибо, похоже что оно.
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / js file uploader
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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