From c9455982c3fe63498ed35ffa25182e45d243752e Mon Sep 17 00:00:00 2001 From: xue <> Date: Tue, 18 Apr 2006 15:23:30 +0000 Subject: TResponse::writeFile takes two additional parameters to allow sending memory data --- framework/Web/THttpResponse.php | 35 +++++++++++++++++++++-------------- 1 file changed, 21 insertions(+), 14 deletions(-) (limited to 'framework') diff --git a/framework/Web/THttpResponse.php b/framework/Web/THttpResponse.php index 3d297e0a..ee2dd99b 100644 --- a/framework/Web/THttpResponse.php +++ b/framework/Web/THttpResponse.php @@ -220,9 +220,11 @@ class THttpResponse extends TModule implements ITextWriter * Sends a file back to user. * Make sure not to output anything else after calling this method. * @param string file name + * @param string content to be set. If null, the content will be read from the server file pointed to by $fileName. + * @param string mime type of the content. * @throws TInvalidDataValueException if the file cannot be found */ - public function writeFile($fileName) + public function writeFile($fileName,$content=null,$mimeType=null) { static $defaultMimeTypes=array( 'css'=>'text/css', @@ -234,26 +236,31 @@ class THttpResponse extends TModule implements ITextWriter 'js'=>'javascript/js' ); - if(!is_file($fileName)) - throw new TInvalidDataValueException('httpresponse_file_inexistent',$fileName); - header('Pragma: public'); - header('Expires: 0'); - header('Cache-Component: must-revalidate, post-check=0, pre-check=0'); - $mimeType='text/plain'; - if(function_exists('mime_content_type')) - $mimeType=mime_content_type($fileName); - else + if($mimeType===null) { - $ext=array_pop(explode('.',$fileName)); - if(isset($defaultMimeTypes[$ext])) - $mimeType=$defaultMimeTypes[$ext]; + if(function_exists('mime_content_type')) + $mimeType=mime_content_type($fileName); + else + { + $ext=array_pop(explode('.',$fileName)); + if(isset($defaultMimeTypes[$ext])) + $mimeType=$defaultMimeTypes[$ext]; + else + $mimeType='text/plain'; + } } $fn=basename($fileName); + header('Pragma: public'); + header('Expires: 0'); + header('Cache-Component: must-revalidate, post-check=0, pre-check=0'); header("Content-type: $mimeType"); header('Content-Length: '.filesize($fileName)); header("Content-Disposition: attachment; filename=\"$fn\""); header('Content-Transfer-Encoding: binary'); - readfile($fileName); + if($content===null) + readfile($fileName); + else + echo $content; } /** -- cgit v1.2.3