Вы пытаетесь отстрелить себе яйца, причем разрывными патронами((
1. explode - для работы с "прогнозируемыми" строками вполне норм, у вас же файлы, могут быть вообще бинарные, например картинки. В случае попадания на delimiter посреди файла - получите кучу мусора. "explode" в смысле "взрыв" - это очень подходящее слово.
2. В БД хранить файлы - не хорошо, вы будете ушатывать БД просто так. Самое интересное - как вы бэкапы планируете делать)) Объемы будут расти очень быстро.
3. Вариант со строкой еще плох тем, что помимо содержания вам нужно будет где-то хранить и мета информацию о файле: MIME тип, название (хотя бы расширение).
4. Отдача файлов, вот тут тоже веселье: допустим получив мега строку вы разделите ее на куски и вытащите таки свой заветный файл, потом будете отдавать его через echo, это будет на порядок дольше, чем через web сервер на прямую.
5. Память на php: что будет, если ваша мега строка занимает 500мб? PHP с настройками по умолчанию сдохнет, даже не дочитав его.
В общем: для хранения файлов используйте БД специально спроектированную для хранения файлов. Это файловая система. Если очень хочется шардирования для снижения нагрузки - можете посмотреть в сторону решений на базе mogilefs.
В MySQL при этом стоит хранить только нужную дополнительную информацию о файле, например: путь, md5, некий идентификатор,...
Сам файл лучше при сохранении приводить к такому виду:
1. Берем md5 хэш от файла md5_file, допустим он у нас получился 01230000000000000000000000000000
2. Перемещаем его в каталог: {UPLOAD_ROOT}/01/23/0000000000000000000000000000. Тут смысл в том, что при большом количестве файлов в одном каталоге будут проблемы с файловой системой по части производительности. В принципе можно оставить оригинальное расширение, тогда шаг 4 не нужен.
3. В БД храним md5 хэш, путь к файлу и MIME-тип, можно еще и оригинальное имя.
4. При запросе на вашу страницу - отдаем через x-accel-redirect, или x-sendfile