parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Как через $response:body правильно отдать файл из БД?

Василий Куклин 13.06.2016 00:07

Доброго всем!
Хочу чтобы при запросе какого-нибудь файла из папки /pic
выдавался файл из базы(хранящийся в BLOB поле.
Написал код который разбирает текст запроса и формирует соответствующий ответ в виде файла
@ifloadfile[][mtc]
$uri[$request:uri]
$mtc[^uri.match[^^/pic/(.+)_(\d+7)(\.\w+)^$]] 
^if($mtc > 0){
	^try{
		$ld_file[^file::sql{SELECT `filedata`,`name` FROM `base_file` WHERE `id`='$mtc.2' AND `name`='${mtc.1}$mtc.3'}[$.limit(1) $.offset(0)]]
	$response:body[$ld_file]
	}{
		$exception.handled(true)
	}
}
Все работает, файл выдается. Вот пример:
http://php.vkmail.top/pic/chrysanthemum_527.jpg

Проблема в том, что все браузеры получают код 404 и не кэшируют изображение((((
Cache-Control: no-store, no-cache, must-revalidate, proxy-revalidate
Connection: keep-alive
Content-Disposition: inline; filename="Chrysanthemum.jpg"
Content-Length: 879394
Content-Type: image/jpeg
Date: Sun, 12 Jun 2016 20:20:45 GMT
Expires: Sun, 31 Dec 2000 22:01:01 GMT
Keep-Alive: timeout=60
Last-Modified: Sun, 12 Jun 2016 20:20:43 GMT
Location: http://php.vkmail.top
Pragma: no-cache
Server: nginx/1.8.0
Set-Cookie: cookie=on; expires=Mon, 12 Jun 2017 20:20:45 GMT; path=/
ПОдскажите, как сделать код 200 и убрать Cache-Control: no-store, no-cache, must-revalidate, proxy-revalidate?

ЧЯДНТ?

  • Как через $response:body правильно отдать файл из БД?, Василий Куклин 13.06.2016 00:07