Вы правы, в некоторых случаях файловая система не может выполнить эту работу.Поскольку базы данных имеют такие функции, как блокировка, репликация, целостность, отсутствие ограничений на количество строк и т. Д. И т. Д., Которых нет в файловой системе.
Кроме того, резервное копирование / восстановление / перенос системы становится болеесложный и не может быть безопасно выполнен на работающем сервере (риск несогласованности и потери данных).Или, по крайней мере, гарантировать это очень сложно в конфигурации DB + FS.
А как насчет перехода с ОС на основе разделителя "/" на ОС на основе \?Вам необходимо обновить все ваши пути.
Ваш метод выглядит правильным, но 4096-байтовый срез слишком мал.Например, у Mysql не возникнет проблем при работе со срезами 256 КБ.
Кроме того, я бы не стал объединять, а скорее сохранял бы каждый фрагмент как отдельную запись.В базе данных могут возникнуть проблемы с хранением огромных файлов в одной записи, и это может привести к ограничениям, упомянутым в других ответах.
Сохранение данных нарезанных позволит потоковую передачу контента, даже не сохраняя, например, все данные в памяти.Таким образом, размер сохраняемого файла практически не ограничен.