diff options
author | xue <> | 2006-04-18 15:23:30 +0000 |
---|---|---|
committer | xue <> | 2006-04-18 15:23:30 +0000 |
commit | c9455982c3fe63498ed35ffa25182e45d243752e (patch) | |
tree | 10ff32cba026128e5454c5b61d1886c699d01548 /framework/Web | |
parent | 0beaf0e5126c537712372638b9b0902a8ef63472 (diff) |
TResponse::writeFile takes two additional parameters to allow sending memory data
Diffstat (limited to 'framework/Web')
-rw-r--r-- | framework/Web/THttpResponse.php | 35 |
1 files changed, 21 insertions, 14 deletions
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;
}
/**
|