Приветствую.
Имеется БД MS SQL в которой в одной из таблиц хранятся вложения (формат вложений может быть любым) в поле VARBINARY(MAX).
Доступа к исходникам скрипта которые добавлял файлы в БД, как обычно нет.
Как при помощи PHP правильно достать эти вложения и отдать пользователю для скачивания, либо сохранить в файл?
На текущий момент простым селектом (без каких либо преобразований) получается, доставать PDF файлы маленького размера ~ до 60 Кб. Если размер больше, либо файлы другого формата, то файл оказывается битым.
Перед картинкой что-то есть.
В базе данных правильные данные?SELECT CONVERT(varchar(10), Photo, 2) FROM Photo Для JPG должно быть FFD8FFE000
Первые 10 символов: ACED000575
Т.е. если не знать, что система туда подмешивает, данные не получится нормально достать?
Да. Это уже не MS SQL, это — преобразованный файл.
Но можно попробовать, например, может ли действительный PDF быть «Java-данными сер.... То есть ваша читалка PDF отбрасывает данные до сигнатуры. Для других файлов попробуйте отбросить первые 27 байт.
Константин Цветков, открыл в notepad. Из видимого:
1. меняется первая строка
2. немного изменяется размер файла. Оригинал 1 501 580 байт, после скачивания: 1 501 607 байт.
В базе данные правильные т.к. если забирать через систему которая туда их кладет, то все ок.
Первые 10 симбволов: ACED000575
Т.е. если не знать, что система туда подмешивает, данные не получится нормально достать?