Upload 100mb souboru přes ftp – problem/nevedomost browse tlacitkem – addUpload
- Fera
- Člen | 22
Zdravím,
v nette dělám teprve chvíli a narazil jsem na takový malý problém.
Potřebuji přes ftp nahrávat zip soubory velké asi 100mb na server. Myšlenka
byla asi taková, že si přes nějaký „browse button“ vyberu soubor a
poté až si nastavím cesty atd jej nahraju na server. Použil jsem na to
komponentu $form->addUpload, jenže po odeslání formuláře, když si chci
vypsat jméno/cestu vybraného souboru, abych jej poté přes ftp->put() mohl
přenést se mi vypíše nějaký dočasný soubor ("C:\Program Files
(x86)\xampp\tmp\phpBEFF.tmp "). Buď nevím jak si vytáhnout cestu k soubru a
nebo mi uniká logika věci a používám nesprávnou komponentu. Rád bych Vás
poprosil o radu, návod, nejraději však budu za krátký úsek kódu :)
// timto zpusobem se snazim vypsat si cestu – file1 = nazev komponenty
„addUpload“
public function UploadFormSucceeded($form){
$values = $form->getValues();
if (isset($values[„file1“]))
echo $values[„file1“];
}
- h4kuna
- Backer | 740
<?php
isset($values['file1']) // je nesmysl vždy bude true
?>
Použij
<?php
if($values['file1']->isOk()) {
dump($values['file1']); // toto je objekt FileUpload
}
?>
Viz Api FileUpload
Cestu k souboru získáš pomocí metody getTemporaryFile() nebo to rovnou přesun na požadované místo pomocí metody move().
<?php
$values['file1']->move($destination);
?>
- Fera
- Člen | 22
Děkuji za rychlou odpověď, to isset tam mám z toho důvodu:
$form = new Form;
for ($i = 1; $i < $models; $i++){
$tmp = 'file'.$i;
$form->addUpload($tmp, NULL, FALSE);
}
// Davam jakoby moznost pro upload max 4 souboru, a pokud v databazi uz ma nekdo 2 soubry nahrane, generuju // jen 2 buttony pro prochazeni souboru :)
Rád bych se ještě zeptal…jestli jsem to správně pochopil…getTemporaryFile() – tímto získám cestu k dočasnému souboru např. „C:\Program Files (x86)\xampp\tmp\phpBEFF.tmp“
$ftp->put($destination_file, $source_file, FTP_BINARY);
// podle meho bych tady ocekaval neco jako
$ftp->put($destination_file, C:\User\Public\Downloads\someZip.zip, FTP_BINARY);
ale mělo by být tedy možné i toto?
$ftp->put($destination_file, $values['file1']->getTemporaryFile(), FTP_BINARY);
a pote provest nejak move na ftpsserveru? To mi tak trošku vrtá ještě hlavou