download() public method

Sets the correct headers to instruct the browser to download the response as a file.
public download ( string $filename ) : void
$filename string The name of the file as the browser will download the response
return void
 /**
  * Sets the response header based on type map index name. This wraps several methods
  * available on Cake\Network\Response. It also allows you to use Content-Type aliases.
  *
  * @param string|array $type Friendly type name, i.e. 'html' or 'xml', or a full content-type,
  *    like 'application/x-shockwave'.
  * @param array $options If $type is a friendly type name that is associated with
  *    more than one type of content, $index is used to select which content-type to use.
  * @return bool Returns false if the friendly type name given in $type does
  *    not exist in the type map, or if the Content-type header has
  *    already been set by this method.
  * @see RequestHandlerComponent::setContent()
  */
 public function respondAs($type, array $options = array())
 {
     $defaults = array('index' => null, 'charset' => null, 'attachment' => false);
     $options += $defaults;
     $cType = $type;
     if (strpos($type, '/') === false) {
         $cType = $this->response->getMimeType($type);
     }
     if (is_array($cType)) {
         if (isset($cType[$options['index']])) {
             $cType = $cType[$options['index']];
         }
         if ($this->prefers($cType)) {
             $cType = $this->prefers($cType);
         } else {
             $cType = $cType[0];
         }
     }
     if (!$type) {
         return false;
     }
     if (empty($this->request->params['requested'])) {
         $this->response->type($cType);
     }
     if (!empty($options['charset'])) {
         $this->response->charset($options['charset']);
     }
     if (!empty($options['attachment'])) {
         $this->response->download($options['attachment']);
     }
     return true;
 }
Beispiel #2
0
 /**
  * Tests the download method
  *
  * @return void
  */
 public function testDownload()
 {
     $response = new Response();
     $expected = ['Content-Disposition' => 'attachment; filename="myfile.mp3"'];
     $response->download('myfile.mp3');
     $this->assertEquals($expected, $response->header());
 }