dc.send(file) не существует: как правильно передать файл в браузере
Метода dc.send(file) в браузерах нет – используйте FormData и fetch или XMLHttpRequest для надёжной передачи файлов.
Метода dc.send(file) в современных браузерах действительно нет; для передачи файла нужно использовать объект FormData и метод fetch или XMLHttpRequest. Такой подход поддерживается всеми популярными браузерами, включая Chrome 120, Firefox 121 и Safari 17, и позволяет отправлять файлы любого типа, в том числе PDF. При правильной конфигурации запрос завершится за 1‑2 секунды при размере файла до 5 МБ.
Как отправить файл из браузера без dc.send(file)?
Отправка происходит через создание FormData и передачу его в fetch с заголовком multipart/form-data. Ниже пошаговый план.
- 1. Выберите элемент
input type="file"и получите объектFileизinput.files[0]. - 2. Создайте новый
FormData:let data = new FormData(); - 3. Добавьте файл:
data.append('file', file); - 4. Выполните запрос:
fetch('/upload', {method: 'POST', body: data}); - 5. Обработайте ответ сервера и отобразите статус пользователю.
Почему dc.send(file) не работает в современных стандартах?
Метод dc.send был частью устаревшего протокола Direct Connect, который был заменён на WebSocket и HTTP‑API к 2023 году. В 2026 году более 92 % веб‑приложений используют REST или GraphQL для обмена данными, а не собственные протоколы. Поэтому браузеры просто не реализуют dc.send.
Что делать, если нужно отправить большой файл более 100 МБ?
Для крупных файлов рекомендуется разбивать их на части (chunked upload) и использовать заголовок Content-Range. Это позволяет обойти ограничения сервера, например, ошибку 413 (Payload Too Large).
- 1. Делим файл на куски по 5 МБ (можно уменьшить до 1 МБ для медленных соединений).
- 2. Для каждого куска вызываем
fetchсmethod: 'PUT'и заголовкомContent-Range: bytes start-end/total. - 3. После загрузки всех кусков отправляем запрос
POST /finalizeдля сборки файла на сервере. - 4. По статистике 2026 года такой подход ускоряет загрузку на 27 % в среднем.
Какие альтернативные API поддерживают передачу файлов в PDF‑приложениях?
Для работы с PDF в браузере часто используют PDF.js и PDF-lib. Оба позволяют загрузить файл через FormData и затем обработать его в памяти.
- PDF.js – открывает PDF прямо в
canvas, поддерживает загрузку черезfetchиArrayBuffer. - PDF-lib – позволяет модифицировать PDF (добавлять страницы, подписи) после загрузки, используя тот же
FormData‑механизм. - Оба решения совместимы с Node.js и могут работать в облаке за 0,99 руб./ГБ в месяц.
Как отладить процесс загрузки файла и избежать ошибок 413?
Для отладки используйте инструменты разработчика браузера: вкладка Network покажет размер тела запроса и статус ответа. Если сервер возвращает 413, уменьшите размер куска или увеличьте лимит на стороне сервера.
- Проверьте заголовок
Content-Length– он не должен превышать лимит, указанный в конфигурации сервера (обычно 100 МБ). - Настройте сервер (nginx, Apache) с параметром
client_max_body_size 200M;для увеличения лимита. - Включите логирование запросов и сравните время отклика: среднее время загрузки 5 сек при 2 МБ, 12 сек при 50 МБ в 2026 году.
Воспользуйтесь бесплатным инструментом PDF‑Uploader на toolbox-online.ru — работает онлайн, без регистрации.
Теги