Manipulação de arquivos estáticos
O webman suporta acesso a arquivos estáticos, que são todos armazenados no diretório public
. Por exemplo, ao acessar http://127.0.0.8787/upload/avatar.png
, na verdade está acessando {diretório principal do projeto}/public/upload/avatar.png
.
Observação
A partir da versão 1.4, o webman suporta plugins de aplicativos. O acesso a arquivos estáticos iniciados com/app/xx/nome_do_arquivo
na verdade está acessando o diretóriopublic
do plugin do aplicativo. Ou seja, o webman >=1.4.0 não suporta o acesso a diretórios em{diretório principal do projeto}/public/app/
.
Para mais informações, consulte Plugins de Aplicativos
Desativar o suporte a arquivos estáticos
Se não precisar do suporte a arquivos estáticos, abra config/static.php
e altere a opção enable
para false. Após desativar, todas as tentativas de acesso a arquivos estáticos resultarão em erro 404.
Alterar o diretório de arquivos estáticos
Por padrão, o webman usa o diretório public como o diretório de arquivos estáticos. Se desejar alterar, modifique a função de auxílio public_path()
em support/helpers.php
.
Middleware de arquivos estáticos
O webman possui um middleware de arquivos estáticos embutido, localizado em app/middleware/StaticFile.php
.
Às vezes, é necessário manipular os arquivos estáticos, como adicionar cabeçalhos HTTP de acesso cruzado, ou proibir o acesso a arquivos que começam com ponto (.
).
O conteúdo de app/middleware/StaticFile.php
é semelhante ao seguinte:
<?php
namespace support\middleware;
use Webman\MiddlewareInterface;
use Webman\Http\Response;
use Webman\Http\Request;
class StaticFile implements MiddlewareInterface
{
public function process(Request $request, callable $next) : Response
{
// Proibir o acesso a arquivos ocultos começando com ponto
if (strpos($request->path(), '/.') !== false) {
return response('<h1>403 forbidden</h1>', 403);
}
/** @var Response $response */
$response = $next($request);
// Adicionar cabeçalhos HTTP de acesso cruzado
/*$response->withHeaders([
'Access-Control-Allow-Origin' => '*',
'Access-Control-Allow-Credentials' => 'true',
]);*/
return $response;
}
}
Se esse middleware for necessário, é preciso ativá-lo na opção middleware
em config/static.php
.