Задача следующая: в приложении на Yii2 есть папка в корне файловой структуры uploads, в которой собственно и хранятся все файлы.
Мне теперь нужно выводить файлы из этой папки. Я создал контроллер:
Код: Выделить всё
public function actionImage(){
$player = Players::findOne(Yii::$app->user->identity->id);
$avatar = Images::find()->where(['id' => $player->avatar])->one();
$response = Yii::$app->getResponse();
$response->headers->set('Content-Type', 'image/jpeg');
$response->format = Response::FORMAT_RAW;
$imgFullPath = Yii::getAlias('@uploads').$avatar->path;
if (!is_resource($response->stream = fopen($imgFullPath, 'r')) ) {
throw new \yii\web\ServerErrorHttpException('file access failed: permission deny');
}
return $response->send();
}
Теперь мне нужно получить это изображение программно в переменную. Делаю это через HTTP-запрос:
Код: Выделить всё
$client = new Client([
'baseUrl' => 'http://tennis.local',
'requestConfig' => [
'format' => Client::FORMAT_RAW_URLENCODED
],
'responseConfig' => [
'format' => Client::FORMAT_RAW_URLENCODED
],
]);
$request = $client->createRequest()
->setFormat(Client::FORMAT_RAW_URLENCODED)
->setHeaders(['content-type' => 'image/jpeg'])
->setUrl('/account/image');
$image = Yii::$app->getResponse()->sendFile('/home/kostya/server/tennis.local/uploads/avatars/1/N-AJYVQdMug.jpg', 'monrofile', [
'mimeType' => 'image/png',
'inline' => true,
]);