В этой части я устанавливаю соединение с помощью 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-архив.
Код: Выделить всё
header("Content-type: application/zip, application/octet-stream");
header("Content-Disposition: attachment; filename=test.zip;");
fpassthru($zip);
Но я хочу открыть сторону zip-сервера, чтобы пользователю не приходилось его загружать.
Итак, когда я просто пытаюсь записать содержимое в файл:
Код: Выделить всё
$file = fopen('test.zip', 'a');
fwrite($file, fpassthru($zip));
fclose($file);
Если у кого-то есть какие-либо решения для правильной записи потока ресурсов в файл на стороне сервера, это было бы здорово.
Подробнее здесь: https://stackoverflow.com/questions/321 ... ary-stream
Мобильная версия