DownloadResponse
extends Response
in package
HTTP response when a download is requested.
Table of Contents
- $CSP : ContentSecurityPolicy
- Content security policy handler
- $body : mixed
- Message body
- $bodyFormat : string
- Type of format the body is in.
- $cookieDomain : string
- Set to .your-domain.com for site-wide cookies
- $cookieHTTPOnly : bool
- Cookie will only be accessible via HTTP(S) (no javascript)
- $cookiePath : string
- Typically will be a forward slash
- $cookiePrefix : string
- Set a cookie name prefix if you need to avoid collisions
- $cookies : array<string|int, mixed>
- Stores all cookies that were set in the response.
- $cookieSameSite : string
- Cookie SameSite setting
- $cookieSecure : bool
- Cookie will only be set if a secure HTTPS connection exists.
- $cookieStore : CookieStore
- CookieStore instance.
- $CSPEnabled : bool
- Whether Content Security Policy is being enforced.
- $headerMap : array<string|int, mixed>
- Holds a map of lower-case header names and their normal-case key as it is in $headers.
- $headers : array<string, Header>
- List of all HTTP request headers.
- $protocolVersion : string
- Protocol version
- $reason : string
- Download reason
- $statusCode : int
- The current status code for this response.
- $statusCodes : array<string|int, mixed>
- HTTP status codes
- $validProtocolVersions : array<string|int, mixed>
- List of valid protocol versions
- $binary : string|null
- Download for binary
- $charset : string
- Download charset
- $file : File|null
- Download for file
- $filename : string
- Download file name
- $setMime : bool
- mime set flag
- __construct() : mixed
- Constructor.
- appendBody() : $this
- Appends data to the body of the current message.
- appendHeader() : $this
- Adds an additional header value to any headers that accept multiple values (i.e. are an array or implement ArrayAccess)
- buildHeaders() : mixed
- set header for file download.
- deleteCookie() : $this
- Sets a cookie to be deleted when the response is sent.
- download() : DownloadResponse|null
- Force a download.
- getBody() : mixed
- Returns the Message's body.
- getContentLength() : int
- get content length.
- getCookie() : array<string|int, Cookie>|Cookie|null
- Returns the cookie
- getCookies() : array<string|int, Cookie>
- Returns all cookies currently set.
- getCookieStore() : CookieStore
- Returns the `CookieStore` instance.
- getHeader() : array<string|int, mixed>|Header|null
- Returns a single header object. If multiple headers with the same name exist, then will return an array of header objects.
- getHeaderLine() : string
- Retrieves a comma-separated string of the values for a single header.
- getHeaders() : array<string, Header>
- Returns an array containing all headers.
- getJSON() : mixed|string
- Returns the current body, converted to JSON is it isn't already.
- getProtocolVersion() : string
- Returns the HTTP Protocol Version.
- getReason() : string
- Gets the response response phrase associated with the status code.
- getReasonPhrase() : string
- Gets the response reason phrase associated with the status code.
- getStatusCode() : int
- Gets the response status code.
- getXML() : mixed|string
- Retrieves the current body into XML and returns it.
- hasCookie() : bool
- Checks to see if the Response has a specified cookie or not.
- hasHeader() : bool
- Determines whether a header exists.
- header() : array<string|int, mixed>|Header|null
- Returns a single Header object. If multiple headers with the same name exist, then will return an array of header objects.
- headers() : array<string, Header>
- Returns an array containing all Headers.
- noCache() : self
- Sets the appropriate headers to ensure this response is not cached by the browsers.
- populateHeaders() : void
- Populates the $headers array with any headers the getServer knows about.
- prependHeader() : $this
- Adds an additional header value to any headers that accept multiple values (i.e. are an array or implement ArrayAccess)
- pretend() : $this
- Turns "pretend" mode on or off to aid in testing.
- redirect() : $this
- Perform a redirect to a new URL, in two flavors: header or location.
- removeHeader() : $this
- Removes a header from the list of headers we track.
- send() : mixed
- {@inheritDoc}
- sendBody() : DownloadResponse
- output download file text.
- sendHeaders() : Response
- Sends the headers of this HTTP request to the browser.
- setBinary() : mixed
- set download for binary string.
- setBody() : $this
- Sets the body of the current message.
- setCache() : mixed
- Disables cache configuration.
- setContentType() : ResponseInterface
- Sets the Content Type header for this response with the mime type and, optionally, the charset.
- setCookie() : $this
- Set a cookie
- setDate() : Response
- Sets the date header
- setFileName() : $this
- set name for the download.
- setFilePath() : mixed
- set download for file.
- setHeader() : $this
- Sets a header and it's value.
- setJSON() : $this
- Converts the $body into JSON and sets the Content Type header.
- setLastModified() : Response
- Sets the Last-Modified date header.
- setLink() : Response
- Set the Link Header
- setProtocolVersion() : $this
- Sets the HTTP protocol version.
- setStatusCode() : mixed
- Disallows status changing.
- setXML() : $this
- Converts $body into XML, and sets the correct Content-Type.
- formatBody() : mixed
- Handles conversion of the of the data into the appropriate format, and sets the correct Content-Type header for our response.
- getHeaderName() : string
- Takes a header name in any case, and returns the normal-case version of the header.
- sendCookies() : mixed
- Actually sets the cookies.
- getContentDisposition() : string
- get Content-Disposition Header string.
- getDownloadFileName() : string
- get download filename.
- sendBodyByBinary() : DownloadResponse
- output download text by binary
- sendBodyByFilePath() : DownloadResponse
- output download text by file.
- setContentTypeByMimeType() : mixed
- Set content type by guessing mime type from file extension
Properties
$CSP
Content security policy handler
public
ContentSecurityPolicy
$CSP
$body
Message body
protected
mixed
$body
$bodyFormat
Type of format the body is in.
protected
string
$bodyFormat
= 'html'
Valid: html, json, xml
$cookieDomain
Set to .your-domain.com for site-wide cookies
protected
string
$cookieDomain
= ''
Tags
$cookieHTTPOnly
Cookie will only be accessible via HTTP(S) (no javascript)
protected
bool
$cookieHTTPOnly
= false
Tags
$cookiePath
Typically will be a forward slash
protected
string
$cookiePath
= '/'
Tags
$cookiePrefix
Set a cookie name prefix if you need to avoid collisions
protected
string
$cookiePrefix
= ''
Tags
$cookies
Stores all cookies that were set in the response.
protected
array<string|int, mixed>
$cookies
= []
Tags
$cookieSameSite
Cookie SameSite setting
protected
string
$cookieSameSite
= CodeIgniterCookieCookie::SAMESITE_LAX
Tags
$cookieSecure
Cookie will only be set if a secure HTTPS connection exists.
protected
bool
$cookieSecure
= false
Tags
$cookieStore
CookieStore instance.
protected
CookieStore
$cookieStore
$CSPEnabled
Whether Content Security Policy is being enforced.
protected
bool
$CSPEnabled
= false
$headerMap
Holds a map of lower-case header names and their normal-case key as it is in $headers.
protected
array<string|int, mixed>
$headerMap
= []
Used for case-insensitive header access.
$headers
List of all HTTP request headers.
protected
array<string, Header>
$headers
= []
$protocolVersion
Protocol version
protected
string
$protocolVersion
$reason
Download reason
protected
string
$reason
= 'OK'
$statusCode
The current status code for this response.
protected
int
$statusCode
= 200
$statusCodes
HTTP status codes
protected
static array<string|int, mixed>
$statusCodes
= [
// 1xx: Informational
100 => 'Continue',
101 => 'Switching Protocols',
102 => 'Processing',
// http://www.iana.org/go/rfc2518
103 => 'Early Hints',
// http://www.ietf.org/rfc/rfc8297.txt
// 2xx: Success
200 => 'OK',
201 => 'Created',
202 => 'Accepted',
203 => 'Non-Authoritative Information',
// 1.1
204 => 'No Content',
205 => 'Reset Content',
206 => 'Partial Content',
207 => 'Multi-Status',
// http://www.iana.org/go/rfc4918
208 => 'Already Reported',
// http://www.iana.org/go/rfc5842
226 => 'IM Used',
// 1.1; http://www.ietf.org/rfc/rfc3229.txt
// 3xx: Redirection
300 => 'Multiple Choices',
301 => 'Moved Permanently',
302 => 'Found',
// Formerly 'Moved Temporarily'
303 => 'See Other',
// 1.1
304 => 'Not Modified',
305 => 'Use Proxy',
// 1.1
306 => 'Switch Proxy',
// No longer used
307 => 'Temporary Redirect',
// 1.1
308 => 'Permanent Redirect',
// 1.1; Experimental; http://www.ietf.org/rfc/rfc7238.txt
// 4xx: Client error
400 => 'Bad Request',
401 => 'Unauthorized',
402 => 'Payment Required',
403 => 'Forbidden',
404 => 'Not Found',
405 => 'Method Not Allowed',
406 => 'Not Acceptable',
407 => 'Proxy Authentication Required',
408 => 'Request Timeout',
409 => 'Conflict',
410 => 'Gone',
411 => 'Length Required',
412 => 'Precondition Failed',
413 => 'Request Entity Too Large',
414 => 'Request-URI Too Long',
415 => 'Unsupported Media Type',
416 => 'Requested Range Not Satisfiable',
417 => 'Expectation Failed',
418 => "I'm a teapot",
// April's Fools joke; http://www.ietf.org/rfc/rfc2324.txt
// 419 (Authentication Timeout) is a non-standard status code with unknown origin
421 => 'Misdirected Request',
// http://www.iana.org/go/rfc7540 Section 9.1.2
422 => 'Unprocessable Entity',
// http://www.iana.org/go/rfc4918
423 => 'Locked',
// http://www.iana.org/go/rfc4918
424 => 'Failed Dependency',
// http://www.iana.org/go/rfc4918
425 => 'Too Early',
// https://datatracker.ietf.org/doc/draft-ietf-httpbis-replay/
426 => 'Upgrade Required',
428 => 'Precondition Required',
// 1.1; http://www.ietf.org/rfc/rfc6585.txt
429 => 'Too Many Requests',
// 1.1; http://www.ietf.org/rfc/rfc6585.txt
431 => 'Request Header Fields Too Large',
// 1.1; http://www.ietf.org/rfc/rfc6585.txt
451 => 'Unavailable For Legal Reasons',
// http://tools.ietf.org/html/rfc7725
499 => 'Client Closed Request',
// http://lxr.nginx.org/source/src/http/ngx_http_request.h#0133
// 5xx: Server error
500 => 'Internal Server Error',
501 => 'Not Implemented',
502 => 'Bad Gateway',
503 => 'Service Unavailable',
504 => 'Gateway Timeout',
505 => 'HTTP Version Not Supported',
506 => 'Variant Also Negotiates',
// 1.1; http://www.ietf.org/rfc/rfc2295.txt
507 => 'Insufficient Storage',
// http://www.iana.org/go/rfc4918
508 => 'Loop Detected',
// http://www.iana.org/go/rfc5842
510 => 'Not Extended',
// http://www.ietf.org/rfc/rfc2774.txt
511 => 'Network Authentication Required',
// http://www.ietf.org/rfc/rfc6585.txt
599 => 'Network Connect Timeout Error',
]
$validProtocolVersions
List of valid protocol versions
protected
array<string|int, mixed>
$validProtocolVersions
= ['1.0', '1.1', '2.0']
$binary
Download for binary
private
string|null
$binary
$charset
Download charset
private
string
$charset
= 'UTF-8'
$file
Download for file
private
File|null
$file
$filename
Download file name
private
string
$filename
$setMime
mime set flag
private
bool
$setMime
Methods
__construct()
Constructor.
public
__construct(string $filename, bool $setMime) : mixed
Parameters
- $filename : string
- $setMime : bool
Return values
mixed —appendBody()
Appends data to the body of the current message.
public
appendBody(mixed $data) : $this
Parameters
- $data : mixed
Return values
$this —appendHeader()
Adds an additional header value to any headers that accept multiple values (i.e. are an array or implement ArrayAccess)
public
appendHeader(string $name, string|null $value) : $this
Parameters
- $name : string
- $value : string|null
Return values
$this —buildHeaders()
set header for file download.
public
buildHeaders() : mixed
Return values
mixed —deleteCookie()
Sets a cookie to be deleted when the response is sent.
public
deleteCookie([string $name = '' ][, string $domain = '' ][, string $path = '/' ][, string $prefix = '' ]) : $this
Parameters
- $name : string = ''
- $domain : string = ''
- $path : string = '/'
- $prefix : string = ''
Return values
$this —download()
Force a download.
public
download([string $filename = '' ][, string|null $data = '' ][, bool $setMime = false ]) : DownloadResponse|null
Generates the headers that force a download to happen. And sends the file to the browser.
Parameters
- $filename : string = ''
-
The path to the file to send
- $data : string|null = ''
-
The data to be downloaded
- $setMime : bool = false
-
Whether to try and send the actual MIME type
Return values
DownloadResponse|null —getBody()
Returns the Message's body.
public
getBody() : mixed
Return values
mixed —getContentLength()
get content length.
public
getContentLength() : int
Return values
int —getCookie()
Returns the cookie
public
getCookie([string|null $name = null ][, string $prefix = '' ]) : array<string|int, Cookie>|Cookie|null
Parameters
- $name : string|null = null
- $prefix : string = ''
Return values
array<string|int, Cookie>|Cookie|null —getCookies()
Returns all cookies currently set.
public
getCookies() : array<string|int, Cookie>
Return values
array<string|int, Cookie> —getCookieStore()
Returns the `CookieStore` instance.
public
getCookieStore() : CookieStore
Return values
CookieStore —getHeader()
Returns a single header object. If multiple headers with the same name exist, then will return an array of header objects.
public
getHeader(string $name) : array<string|int, mixed>|Header|null
Parameters
- $name : string
Tags
Return values
array<string|int, mixed>|Header|null —getHeaderLine()
Retrieves a comma-separated string of the values for a single header.
public
getHeaderLine(string $name) : string
This method returns all of the header values of the given case-insensitive header name as a string concatenated together using a comma.
NOTE: Not all header values may be appropriately represented using comma concatenation. For such headers, use getHeader() instead and supply your own delimiter when concatenating.
Parameters
- $name : string
Return values
string —getHeaders()
Returns an array containing all headers.
public
getHeaders() : array<string, Header>
Tags
Return values
array<string, Header> —An array of the request headers
getJSON()
Returns the current body, converted to JSON is it isn't already.
public
getJSON() : mixed|string
Tags
Return values
mixed|string —getProtocolVersion()
Returns the HTTP Protocol Version.
public
getProtocolVersion() : string
Return values
string —getReason()
Gets the response response phrase associated with the status code.
public
getReason() : string
Tags
Return values
string —getReasonPhrase()
Gets the response reason phrase associated with the status code.
public
getReasonPhrase() : string
Because a reason phrase is not a required element in a response status line, the reason phrase value MAY be null. Implementations MAY choose to return the default RFC 7231 recommended reason phrase (or those listed in the IANA HTTP Status Code Registry) for the response's status code.
Tags
Return values
string —Reason phrase; must return an empty string if none present.
getStatusCode()
Gets the response status code.
public
getStatusCode() : int
The status code is a 3-digit integer result code of the getServer's attempt to understand and satisfy the request.
Return values
int —Status code.
getXML()
Retrieves the current body into XML and returns it.
public
getXML() : mixed|string
Tags
Return values
mixed|string —hasCookie()
Checks to see if the Response has a specified cookie or not.
public
hasCookie(string $name[, string|null $value = null ][, string $prefix = '' ]) : bool
Parameters
- $name : string
- $value : string|null = null
- $prefix : string = ''
Return values
bool —hasHeader()
Determines whether a header exists.
public
hasHeader(string $name) : bool
Parameters
- $name : string
Return values
bool —header()
Returns a single Header object. If multiple headers with the same name exist, then will return an array of header objects.
public
header(string $name) : array<string|int, mixed>|Header|null
Parameters
- $name : string
Return values
array<string|int, mixed>|Header|null —headers()
Returns an array containing all Headers.
public
headers() : array<string, Header>
Return values
array<string, Header> —An array of the Header objects
noCache()
Sets the appropriate headers to ensure this response is not cached by the browsers.
public
noCache() : self
Return values
self —populateHeaders()
Populates the $headers array with any headers the getServer knows about.
public
populateHeaders() : void
Return values
void —prependHeader()
Adds an additional header value to any headers that accept multiple values (i.e. are an array or implement ArrayAccess)
public
prependHeader(string $name, string $value) : $this
Parameters
- $name : string
- $value : string
Return values
$this —pretend()
Turns "pretend" mode on or off to aid in testing.
public
pretend([bool $pretend = true ]) : $this
Note that this is not a part of the interface so should not be relied on outside of internal testing.
Parameters
- $pretend : bool = true
Return values
$this —redirect()
Perform a redirect to a new URL, in two flavors: header or location.
public
redirect(string $uri[, string $method = 'auto' ][, int $code = null ]) : $this
Parameters
- $uri : string
-
The URI to redirect to
- $method : string = 'auto'
- $code : int = null
-
The type of redirection, defaults to 302
Tags
Return values
$this —removeHeader()
Removes a header from the list of headers we track.
public
removeHeader(string $name) : $this
Parameters
- $name : string
Return values
$this —send()
{@inheritDoc}
public
send() : mixed
Tags
Return values
mixed —sendBody()
output download file text.
public
sendBody() : DownloadResponse
Tags
Return values
DownloadResponse —sendHeaders()
Sends the headers of this HTTP request to the browser.
public
sendHeaders() : Response
Return values
Response —setBinary()
set download for binary string.
public
setBinary(string $binary) : mixed
Parameters
- $binary : string
Return values
mixed —setBody()
Sets the body of the current message.
public
setBody(mixed $data) : $this
Parameters
- $data : mixed
Return values
$this —setCache()
Disables cache configuration.
public
setCache([array<string|int, mixed> $options = [] ]) : mixed
Parameters
- $options : array<string|int, mixed> = []
Tags
Return values
mixed —setContentType()
Sets the Content Type header for this response with the mime type and, optionally, the charset.
public
setContentType(string $mime[, string $charset = 'UTF-8' ]) : ResponseInterface
Parameters
- $mime : string
- $charset : string = 'UTF-8'
Return values
ResponseInterface —setCookie()
Set a cookie
public
setCookie(string|array<string|int, mixed> $name[, string $value = '' ][, string $expire = '' ][, string $domain = '' ][, string $path = '/' ][, string $prefix = '' ][, bool $secure = false ][, bool $httponly = false ][, string|null $samesite = null ]) : $this
Accepts an arbitrary number of binds (up to 7) or an associative array in the first parameter containing all the values.
Parameters
- $name : string|array<string|int, mixed>
-
Cookie name or array containing binds
- $value : string = ''
-
Cookie value
- $expire : string = ''
-
Cookie expiration time in seconds
- $domain : string = ''
-
Cookie domain (e.g.: '.yourdomain.com')
- $path : string = '/'
-
Cookie path (default: '/')
- $prefix : string = ''
-
Cookie name prefix
- $secure : bool = false
-
Whether to only transfer cookies via SSL
- $httponly : bool = false
-
Whether only make the cookie accessible via HTTP (no javascript)
- $samesite : string|null = null
Return values
$this —setDate()
Sets the date header
public
setDate(DateTime $date) : Response
Parameters
- $date : DateTime
Return values
Response —setFileName()
set name for the download.
public
setFileName(string $filename) : $this
Parameters
- $filename : string
Return values
$this —setFilePath()
set download for file.
public
setFilePath(string $filepath) : mixed
Parameters
- $filepath : string
Return values
mixed —setHeader()
Sets a header and it's value.
public
setHeader(string $name, array<string|int, mixed>|null|string $value) : $this
Parameters
- $name : string
- $value : array<string|int, mixed>|null|string
Return values
$this —setJSON()
Converts the $body into JSON and sets the Content Type header.
public
setJSON(array<string|int, mixed>|string $body[, bool $unencoded = false ]) : $this
Parameters
- $body : array<string|int, mixed>|string
- $unencoded : bool = false
Return values
$this —setLastModified()
Sets the Last-Modified date header.
public
setLastModified(DateTime|string $date) : Response
$date can be either a string representation of the date or, preferably, an instance of DateTime.
Parameters
- $date : DateTime|string
Return values
Response —setLink()
Set the Link Header
public
setLink(PagerInterface $pager) : Response
Parameters
- $pager : PagerInterface
Tags
Return values
Response —setProtocolVersion()
Sets the HTTP protocol version.
public
setProtocolVersion(string $version) : $this
Parameters
- $version : string
Tags
Return values
$this —setStatusCode()
Disallows status changing.
public
setStatusCode(int $code[, string $reason = '' ]) : mixed
Parameters
- $code : int
- $reason : string = ''
Tags
Return values
mixed —setXML()
Converts $body into XML, and sets the correct Content-Type.
public
setXML(array<string|int, mixed>|string $body) : $this
Parameters
- $body : array<string|int, mixed>|string
Return values
$this —formatBody()
Handles conversion of the of the data into the appropriate format, and sets the correct Content-Type header for our response.
protected
formatBody(string|array<string|int, mixed> $body, string $format) : mixed
Parameters
- $body : string|array<string|int, mixed>
- $format : string
-
Valid: json, xml
Tags
Return values
mixed —getHeaderName()
Takes a header name in any case, and returns the normal-case version of the header.
protected
getHeaderName(string $name) : string
Parameters
- $name : string
Return values
string —sendCookies()
Actually sets the cookies.
protected
sendCookies() : mixed
Return values
mixed —getContentDisposition()
get Content-Disposition Header string.
private
getContentDisposition() : string
Return values
string —getDownloadFileName()
get download filename.
private
getDownloadFileName() : string
Return values
string —sendBodyByBinary()
output download text by binary
private
sendBodyByBinary() : DownloadResponse
Return values
DownloadResponse —sendBodyByFilePath()
output download text by file.
private
sendBodyByFilePath() : DownloadResponse
Return values
DownloadResponse —setContentTypeByMimeType()
Set content type by guessing mime type from file extension
private
setContentTypeByMimeType() : mixed