++ fix restore backup
This commit is contained in:
@@ -21,6 +21,32 @@ use Illuminate\Support\Str;
|
||||
*/
|
||||
class BackupController extends Controller
|
||||
{
|
||||
/**
|
||||
* Tetto per il pacchetto in ingresso, in kilobyte.
|
||||
*
|
||||
* Deriva da `app.max_upload_mb`, da cui l'entrypoint ricava anche i limiti
|
||||
* di nginx e di PHP. Il valore qui sta *sotto* quelli di un margine: se a
|
||||
* fermare la richiesta e' nginx, il browser riceve un 413 senza corpo — o
|
||||
* niente affatto — invece di un messaggio; se la ferma la validazione, chi
|
||||
* carica legge cosa e' successo. Il margine copre anche l'intestazione
|
||||
* multipart, che gonfia il corpo oltre la dimensione del file.
|
||||
*
|
||||
* La vista lo legge da qui per rifiutare il file prima ancora di iniziare a
|
||||
* caricarlo: una sola fonte per un solo numero.
|
||||
*/
|
||||
public static function maxUploadKb(): int
|
||||
{
|
||||
$mb = max(1, (int) config('app.max_upload_mb', 2048));
|
||||
|
||||
// 2% di margine, minimo 1 MB, per l'incapsulamento multipart.
|
||||
return (int) (($mb - max(1, (int) ($mb * 0.02))) * 1000);
|
||||
}
|
||||
|
||||
public static function maxUploadMb(): int
|
||||
{
|
||||
return (int) (self::maxUploadKb() / 1000);
|
||||
}
|
||||
|
||||
public function __construct(
|
||||
private readonly BackupOperationState $stato,
|
||||
) {
|
||||
@@ -76,16 +102,12 @@ class BackupController extends Controller
|
||||
*/
|
||||
public function upload(Request $request)
|
||||
{
|
||||
// 256 MB e' il tetto reale della pila, non una scelta di questa
|
||||
// validazione: piu' in su intervengono prima `client_max_body_size` di
|
||||
// nginx e `upload_max_filesize`/`post_max_size` di PHP, che rifiutano
|
||||
// la richiesta con un 413 opaco invece di un messaggio leggibile.
|
||||
$request->validate([
|
||||
'backupZip' => ['required', 'file', 'mimes:zip', 'max:256000'],
|
||||
'backupZip' => ['required', 'file', 'mimes:zip', 'max:' . self::maxUploadKb()],
|
||||
], [
|
||||
'backupZip.required' => 'Seleziona il pacchetto di backup da ripristinare.',
|
||||
'backupZip.mimes' => 'Il pacchetto di backup deve essere un file .zip.',
|
||||
'backupZip.max' => 'Il pacchetto supera i 256 MB accettati dal server.',
|
||||
'backupZip.max' => 'Il pacchetto supera i ' . self::maxUploadMb() . ' MB accettati dal server.',
|
||||
]);
|
||||
|
||||
// Stesso blocco del componente Livewire, ripetuto qui perche' questa e'
|
||||
|
||||
Reference in New Issue
Block a user