改名
This commit is contained in:
@@ -121,13 +121,13 @@ class Response extends HttpService implements ResponseInterface
|
|||||||
* @return $this|Response
|
* @return $this|Response
|
||||||
* @throws Exception
|
* @throws Exception
|
||||||
*/
|
*/
|
||||||
public function sendFile(string $path, bool $isChunk = false, int $limit = 10240): static
|
public function sendFile(string $path, bool $isChunk = false, int $offset = 0, int $limit = 10240): static
|
||||||
{
|
{
|
||||||
$this->format = self::FILE;
|
$this->format = self::FILE;
|
||||||
if (!file_exists($path)) {
|
if (!file_exists($path)) {
|
||||||
throw new Exception('File `' . $path . '` not exists.');
|
throw new Exception('File `' . $path . '` not exists.');
|
||||||
}
|
}
|
||||||
$this->endData = ['path' => $path, 'isChunk' => $isChunk, 'limit' => $limit];
|
$this->endData = ['path' => $path, 'isChunk' => $isChunk, 'limit' => $limit, 'offset' => $offset];
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,6 @@ namespace Server\Constrict;
|
|||||||
use Exception;
|
use Exception;
|
||||||
use HttpServer\Http\Formatter\FileFormatter;
|
use HttpServer\Http\Formatter\FileFormatter;
|
||||||
use Server\ResponseInterface;
|
use Server\ResponseInterface;
|
||||||
use validator\EnumValidator;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -31,6 +30,17 @@ class ResponseEmitter
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const IMAGES = [
|
||||||
|
'png' => 'image/png',
|
||||||
|
'jpeg' => 'image/jpeg',
|
||||||
|
'gif' => 'image/gif',
|
||||||
|
'bmp' => 'image/bmp',
|
||||||
|
'ico' => 'image/vnd.microsoft.icon',
|
||||||
|
'tiff' => 'image/tiff',
|
||||||
|
'svg' => 'image/svg+xml',
|
||||||
|
];
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param array $content
|
* @param array $content
|
||||||
* @param \Swoole\Http\Response $response
|
* @param \Swoole\Http\Response $response
|
||||||
@@ -42,13 +52,14 @@ class ResponseEmitter
|
|||||||
$response->header('Pragma', 'public');
|
$response->header('Pragma', 'public');
|
||||||
$response->header('Expires', '0');
|
$response->header('Expires', '0');
|
||||||
$response->header('Cache-Control', 'must-revalidate, post-check=0, pre-check=0');
|
$response->header('Cache-Control', 'must-revalidate, post-check=0, pre-check=0');
|
||||||
// $response->header('Content-Type', 'application/force-download');
|
|
||||||
$response->header('Content-Type', 'application/octet-stream');
|
|
||||||
// $response->header('Content-Type', 'application/vnd.ms-excel');
|
|
||||||
// $response->header('Content-Type', 'application/download');
|
|
||||||
$response->header('Content-Disposition', 'attachment;filename=' . end($explode));
|
$response->header('Content-Disposition', 'attachment;filename=' . end($explode));
|
||||||
$response->header('Content-Transfer-Encoding', 'binary');
|
$response->header('Content-Type', $type = get_file_extension($content['path']));
|
||||||
|
if (!in_array($type, self::IMAGES)) {
|
||||||
|
$response->header('Content-Transfer-Encoding', 'binary');
|
||||||
|
} else {
|
||||||
|
$response->end(file_get_contents($content['path']));
|
||||||
|
return;
|
||||||
|
}
|
||||||
if ($content['isChunk'] === false) {
|
if ($content['isChunk'] === false) {
|
||||||
$response->sendfile($content['path']);
|
$response->sendfile($content['path']);
|
||||||
} else {
|
} else {
|
||||||
@@ -67,7 +78,7 @@ class ResponseEmitter
|
|||||||
|
|
||||||
$state = fstat($resource);
|
$state = fstat($resource);
|
||||||
|
|
||||||
$offset = 0;
|
$offset = $content['offset'];
|
||||||
|
|
||||||
$response->header('Content-length', $state['size']);
|
$response->header('Content-length', $state['size']);
|
||||||
while ($file = fread($resource, $content['limit'])) {
|
while ($file = fread($resource, $content['limit'])) {
|
||||||
|
|||||||
Reference in New Issue
Block a user