Nahrávání souboru přes POST a chyba 413
- Mára98
- Člen | 47
Ahoj všem,
na své Nette stránce používám JavaScriptovou knihovnu, která interně nahrává soubor na server. Když ale nahraji soubor větší než cca 4MB, dostanu chybu 413. Endpoint vypadá nějak takto:
/**
* Endpoint pro nahrání souborů. Využíváno editorem (Editor.vue)
*/
public function actionUploadFile() {
// Získá HTTP request
$request = $this->getHttpRequest();
// Získá obrázek a příponu
$file = $request->getFile('file');
$type = array_slice(explode('.', $file->getSanitizedName()), -1)[0];
// Vytvoří název souboru
$name = uniqid('FILE_') . '.' . $type;
// Přesune soubor do adresáře pro
// nahrané (uploadnuté) soubory
$file->move(dirname(__FILE__) . '/../../www/uploaded/' . $name);
// Odešle odpověď
$this->sendResponse(new JsonResponse([
// Data určená pro klienta
'success' => 1,
'file' => [
// Cesta k obrázku
'url' => '/uploaded/' . $name,
// Jméno
'name' => $name,
// Velikost
'size' => $file->getSize(),
// Přípona
'extension' => $type
]
]));
}
Knihovna je k nahlédnutí zde. V configu mám pak toto:
php:
post_max_size: 256M
upload_max_filesize: 256M
memory_limit: 512M
max_input_time: 0
Nenapadá prosím někoho, kde by mohl být problém?
- dakur
- Člen | 493
@Mára98 Knihovnu jsem nezkoumal, ale zkusil bych poslat request
přímo bez ní, jestli se to bude chovat stejně. Taky zkouknout, jestli se PHP
dostane do té actionUploadFile()
nebo kam vlastně. Prostě
oddebuggovat to tak, abych zjistil, ve kterém místě se to pokazí – pak
teprve proč.
- jiri.pudil
- Nette Blogger | 1032
Taky je možné, že to zařízne ještě něco před PHPčkem, tj. web server nebo třeba reverzní proxy, ty typicky taky umějí limitovat velikost požadavku.