Записать ZIP с помощью PHP из поля SQL IMAGE, полученного как BINARY STREAMPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Записать ZIP с помощью PHP из поля SQL IMAGE, полученного как BINARY STREAM

Сообщение Anonymous »

Я хочу получить ZIP-файл с PHP из базы данных MSSQL, которая хранится в поле IMAGE.
В этой части я устанавливаю соединение с помощью sqlsrv, отправляю запрос, перехожу к первой строке и получаю первое поле в двоичной кодировке.

Код: Выделить всё

$conn = sqlsrv_connect($sql['s'],array('Database'=>$sql['db'],'UID'=>$sql['usr'],'PWD'=>$sql['pwd']));

$q = 'SELECT TOP 1 FileContent
FROM dbo.tblDocumentContent
WHERE FileContent IS NOT NULL
ORDER BY CreateDate DESC';

$res = sqlsrv_query($conn, $q);
sqlsrv_fetch($res);
$zip = sqlsrv_get_field($res,0,SQLSRV_PHPTYPE_STREAM(SQLSRV_ENC_BINARY));
На этом этапе zip-архив извлекается как поток ресурсов, и здесь я застреваю.
Когда я устанавливаю заголовки и вывожу содержимое, браузер загружает zip-архив.

Код: Выделить всё

header("Content-type: application/zip, application/octet-stream");
header("Content-Disposition: attachment; filename=test.zip;");
fpassthru($zip);
Это работает просто великолепно, zip работает идеально.
Но я хочу открыть сторону zip-сервера, чтобы пользователю не приходилось его загружать.
Итак, когда я просто пытаюсь записать содержимое в файл:

Код: Выделить всё

$file = fopen('test.zip', 'a');
fwrite($file, fpassthru($zip));
fclose($file);
Невозможно открыть. Я полагал, что когда браузер загружает данный контент, он каким-то образом его кодирует. Хотя я не могу понять, как это сделать при записи в файл.
Если у кого-то есть какие-либо решения для правильной записи потока ресурсов в файл на стороне сервера, это было бы здорово.

Подробнее здесь: https://stackoverflow.com/questions/321 ... ary-stream
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»