Example #1
0
 /**
  * Send the file to the client (Download)
  *
  * @param  string|array $options Options for the file(s) to send
  * @throws \UnexpectedValueException
  * @throws \InvalidArgumentException
  * @return void
  */
 public function send($options = null)
 {
     if (is_string($options)) {
         $filepath = $options;
     } elseif (is_array($options) && isset($options['filepath'])) {
         $filepath = $options['filepath'];
     } else {
         throw new \InvalidArgumentException("Filename is not set.");
     }
     if (!is_file($filepath) || !is_readable($filepath)) {
         throw new \InvalidArgumentException("File '{$filepath}' does not exists.");
     }
     $mimeType = $this->mime->getMimeType($filepath);
     $this->response->setHeader('Content-length', filesize($filepath));
     $this->response->setHeader('Content-Type', $mimeType);
     $this->response->sendHeaders();
     $handle = fopen($filepath, 'r');
     if ($handle) {
         while (($buffer = fgets($handle, 4096)) !== false) {
             echo $buffer;
         }
         if (!feof($handle)) {
             throw new \UnexpectedValueException("Unexpected end of file");
         }
         fclose($handle);
     }
 }
Example #2
0
 public function testSend()
 {
     $file = __DIR__ . '/../../_files/javascript.js';
     $contentType = 'content/type';
     $this->response->expects($this->at(0))->method('setHeader')->with('Content-length', filesize($file));
     $this->response->expects($this->at(1))->method('setHeader')->with('Content-Type', $contentType);
     $this->response->expects($this->once())->method('sendHeaders');
     $this->mime->expects($this->once())->method('getMimeType')->with($file)->will($this->returnValue($contentType));
     $this->expectOutputString(file_get_contents($file));
     $this->object->send($file);
 }
Example #3
0
 /**
  * @param string $file
  * @param string $expectedType
  *
  * @dataProvider getMimeTypeDataProvider
  */
 public function testGetMimeType($file, $expectedType)
 {
     $actualType = $this->object->getMimeType($file);
     $this->assertSame($expectedType, $actualType);
 }