summaryrefslogtreecommitdiff
path: root/framework/Web/THttpResponse.php
diff options
context:
space:
mode:
authorxue <>2006-04-18 15:25:55 +0000
committerxue <>2006-04-18 15:25:55 +0000
commit7fe4f0ec9b89ba568cf0ddabffd929ed8e6739a5 (patch)
treea93fd238ccf6b9de2e1ad0c7af4cdc8e09086328 /framework/Web/THttpResponse.php
parent0b6ffbe14058e7453ae9861d2e4a1633b0a2f534 (diff)
Merge from 3.0 branch till 938.
Diffstat (limited to 'framework/Web/THttpResponse.php')
-rw-r--r--framework/Web/THttpResponse.php37
1 files changed, 22 insertions, 15 deletions
diff --git a/framework/Web/THttpResponse.php b/framework/Web/THttpResponse.php
index f76218ca..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;
}
/**
@@ -288,7 +295,7 @@ class THttpResponse extends TModule implements ITextWriter
$charset=$this->getCharset();
if($charset==='' && ($globalization=$this->getApplication()->getGlobalization(false))!==null)
$charset=$globalization->getCharset();
- if($charset==='')
+ if($charset!=='')
{
$header='Content-Type: '.$this->getContentType().';charset='.$charset;
$this->appendHeader($header);