Я управляю типами CLOB и BLOB с помощью DB2, PHP и Yii Framework (хотя я использую только php). Я получаю загружать файлы в DB2. С типами CLOB и BLOB. Но у меня проблема, я не могу загрузить файлы. Я получаю ресурс, тип потока с этим кодом:
if(is_resource($model->file_content)) echo 'resource of type:';
echo '<br>';
echo get_resource_type($model->file_content);
Мне нужно конвертировать этот поток в файл для загрузки в сети.
Я пробовал: print_r( stream_get_contents($model->file_content));
и используя fread()
Есть ли функция php для получения типа потока?
Редактировать: Тип «ibm PDO Lob Stream», это получить с stream_get_meta_data($model->file_content);
Также я попробовал:
header('Pragma: public');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Content-Transfer-Encoding: binary');
header('Content-length: '.$model->file_size);
header('Content-Type: '.$model->file_type);
header('Content-Disposition: attachment; filename='.$model->file_name);
echo $model->file_content;
Но в результате файл с HTML моей страницы.
Вы можете мне помочь? Спасибо
Нет необходимости писать чисто PHP
код. Yii
имеет метод, называемый sendFile
который обрабатывает это. Взглянуть:
Yii::app()->request->sendFile('file.ext', "Content Of File", "Mime Time",TRUE);
Как определяет официальный документ sendFile()
:
Посылает файл пользователю.
public void sendFile(string $fileName, string $content, string $mimeType=NULL, boolean $terminate=true)
Также предлагается использовать Yii’s CFileHelper класс тоже.
Других решений пока нет …