Autor Zpráva
aaa
Profil
Zajímalo by mě jestli se dá udělat nějak upload více souborů najednou. Když mám třeba 100 souborů, který potřebuju přes rozhraní dostat na server, abych to nemusel brát po jednom. Zazipovat ty soubory a na serveru je rozbalit?
Akacko
Profil
Da se udělat upload vice souborů naraz. a rozbalit myslim taky.
aaa
Profil
A nevěděl bys úplně náhodou jak? Pokud použiju input typu "file" tak ten mi při vybírání souboru neumožní selekci více souborů. Díky
Alphard
Profil
buď file použiješ vícekrát, nebo zabalit
Akacko
Profil
udělaš si x inputu typu file se stejnym atributem name, t5eba pomoci for()
např:
<input type="file" name="file[]" />

a po odeslani formulaře (nezapomeň na enctype="multipart/form-data")

to rozděliš:

foreach($_FILES['file']['name'] as $key => $value){
echo $_FILES['file']['name'][$key]; // takhle to pak vypisuješ s [$key] nakonci
echo $_FILES['file']['error'][$key];
echo $_FILES['file']['size'][$key]; atd
}
Ssob
Profil
Ja jsem resil podobny problem zazipovanim. Jestli chces muzu pohledat zdrojak..
aaa
Profil
Ssob: kdybys byl tak hodnej... díky
Ssob
Profil
Davam sem celej skript na upload obrazku do fotogalerie. Hlasky jsou v polsko-ceskem nareci.. Najdi si tam co potrebujes. Na rozbaleni zipu je funkce unpackZip.


<?
session_start();
include('autorizace.php');
require_once ('connect.php');


if (!$_POST['fotki_new_nazwa'])
{
PosliHlaske("Niezadano nazwa");
}
if (!checkdate($_POST['new_fotki_kiedy_m'],$_POST['new_fotki_kiedy_d'],$_ POST['new_fotki_kiedy_r']))
{
PosliHlaske("Datum je nieplatne");
}

$fotki_new_kiedy=mktime(0,0,0,$_POST['new_fotki_kiedy_m'],$_POST['new_ fotki_kiedy_d'],$_POST['new_fotki_kiedy_r']);
/*
print '<pre>';
print_r($_FILES['soubor']);
print '</pre>';

print $_FILES['soubor']['type'][0].'<br />';
print $_FILES['soubor']['type'][1].'<br />';
*/
for ($i = 0;$i < count($_FILES['soubor']['tmp_name']); $i++)
{
if (!is_file($_FILES['soubor']['tmp_name'][$i]))
PosliHlaske("Musisz wybrac jaksi soubor (soubor ".($i+1).")");
if ($_FILES['soubor']['type'][$i] != 'application/x-zip-compressed' && $_FILES['soubor']['type'][$i] != 'application/zip')
PosliHlaske("Moze to byc jyny zip (soubor ".($i+1).")");
}

//print_r($_FILES['soubor']);
//exit;

$souborow = 0;
$slozka = DejNowomSlozke();
$cesta = '../fotosy/'.$slozka.'/';
print 'Slozka - '.$slozka.'<br />';

for ($i = 0;$i < count($_FILES['soubor']['tmp_name']); $i++)
{
if (move_uploaded_file($_FILES['soubor']['tmp_name'][$i],"../zip/".$_FILE S['soubor']['name'][$i]))
{
$hlaska = "Soubor ".$_FILES['soubor']['name'][$i]." o wielkosci ";
$hlaska .= round(($_FILES['soubor']['size'][$i]/1048576), 2)."MB byl ulozony na serwer.<br />";
print $hlaska;
print 'Teraz se rozbaluje<br />';
$file = explode('.', $_FILES['soubor']['name'][$i]);
if (unpackZip("../zip/", $file[0],$cesta,$souborow))
print 'Rozbalone ok (soubor '.($i+1).')<br />';
else
print 'Niepodarzilo se rozbalic soubor '.($i+1).'<br />Rozbalymy to ryncznie jak tu bydymy<br />';
}
}
echo 'Rozbalone wszystko. Souborow = '.($i+1).'. Wszystkich fotek = '.$souborow.'.<br />';
print 'Sprawdzom czy je dobro wielkosc obrazkow - maksymalno wielkosc 200kb<br />';

$handle=opendir($cesta);
while ($file = readdir($handle))
{
if ($file != "." && !is_dir($cesta.$file))
{
$wel = getimagesize($cesta.$file);
$size = round((filesize($cesta.$file) / 1024),2);
echo $file.' - '.$wel[0].'px x '.$wel[1].'px, '.$size.'kb';
if ($size<200)
print ' --> OK';
else
{
print ' --> Za wielki, zmiynszom';
list($wid,$hei) = @getimagesize($cesta.$file);
if ($wid > $hei)
$ratio = 1000 / $wid;
else
$ratio = 1000 / $hei;
$new_wid = $wid * $ratio;
$new_hei = $hei * $ratio;
$thumb = imagecreatetruecolor($new_wid,$new_hei);
$source = imagecreatefromjpeg($cesta.$file);
imagecopyresampled($thumb,$source,0,0,0,0,$new_wid,$new_hei,$wid,$hei) ;
unlink($cesta.$file);
print 'Odstraniony soubor '.$cesta.$file.'<br />';
imagejpeg($thumb, $cesta.$file,75);
imagedestroy($thumb);
imagedestroy($source);
$size = round((filesize($cesta.$file) / 1024),2);
print '<br />Zmiynszone - '.$size.'kb';
}
print '<br />';
}
}
closedir($handle);
print 'Koniec kontroli wielkosci<br />';
print 'Wytworzom miniatury - wysokosc miniatur je 100px<br />';
$handle=opendir($cesta);
mkdir('../mini/'.$slozka);
while ($file = readdir($handle))
{
if ($file != "." && !is_dir($cesta.$file))
{
$wel = getimagesize($cesta.$file);
echo $file.' - '.$wel[0].'px x '.$wel[1].'px';
list($wid,$hei) = @getimagesize($cesta.$file);
$ratio = 100 / $hei;
$new_wid = $wid * $ratio;
$new_hei = $hei * $ratio;
$thumb = imagecreatetruecolor($new_wid,$new_hei);
$source = imagecreatefromjpeg($cesta.$file);
imagecopyresampled($thumb,$source,0,0,0,0,$new_wid,$new_hei,$wid,$hei) ;
imagejpeg($thumb, '../mini/'.$slozka.'/'.$file,75);
imagedestroy($thumb);
imagedestroy($source);
$wel = getimagesize('../mini/'.$slozka.'/'.$file);

print ' --> Zrobiono miniatura - '.$wel[0].'px x '.$wel[1].'px';
print '<br />';
}
}
closedir($handle);
print 'Miniatury wyrworzone<br />';

$sql = "INSERT INTO Fotki2 VALUES('','".$_SESSION['prihlas_ID']."','$slozka','".$_POST['fotki_new _nazwa']."','$souborow','".$fotki_new_kiedy."','".time()."')";
$mysql_query = mysql_query($sql);
if ($mysql_query)
{
/*$tekst= "Byly przidane nowe fotki<br />".$_POST['fotki_new_nazwa']." - ".date("d.m.Y",$fotki_new_kiedy);
$sql="INSERT INTO Home VALUES ('','".$_SESSION['prihlas_ID']."','".time()."','Nowe fotki!','$tekst','')";*/
$sql="INSERT INTO Nowe VALUES ('','".$_POST['fotki_new_nazwa']."','7','zobraz=7&fotki_id=".mysql_ins ert_id()."','".time()."','".$_SESSION['prihlas_ID']."')";
$mysql_query=@mysql_query($sql,$connect);
print 'Wlozone do DB<br />';
}
else
print 'Nie podarzilo se wlozyc do DB<br />';
PosliHlaske('OK');

function PosliHlaske($s_Hlaska)
{
print '<br />'.$s_Hlaska;
print '<br /><br /><a href="'.$_SERVER['HTTP_REFERER'].'">Spatki se wrocisz tu</a>';
exit;
}

function unpackZip($dir,$file,$newdir,&$ilosc)
{
if ($zip = zip_open($dir.$file.".zip"))
{
if ($zip)
{
if (!is_dir($newdir))
echo mkdir($newdir);
while ($zip_entry = zip_read($zip))
{
if (zip_entry_open($zip,$zip_entry,"r"))
{
$buf = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry));
$dir_name = dirname(zip_entry_name($zip_entry));
if ($dir_name != ".")
{
$dir_op = $dir.$file."/";
foreach ( explode("/",$dir_name) as $k)
{
$dir_op = $dir_op . $k;
if (is_file($dir_op))
unlink($dir_op);
}
}
$nazwa = explode('.', zip_entry_name($zip_entry));
if ($nazwa[1] == 'jpg' || $nazwa[1] == 'JPG')
{
$ilosc++;
$fp=fopen($newdir.$ilosc.'.jpg',"w");
fwrite($fp,$buf);

fclose($fp);
}
zip_entry_close($zip_entry);
}
else
return false;

}
zip_close($zip);
}
}
else
return false;

return true;
}
function DejNowomSlozke($dir = '../fotosy')
{
$handle=opendir($dir);
$max = 1;
while ($file = readdir($handle))
{
if ($file != "." && is_dir($dir.'/'.$file))
{
if (intval($file))
{
if ($file > $max)
{
$max = $file;
}
}
}
}
closedir($handle);
return $max+1;
}
?>
Toto téma je uzamčeno. Odpověď nelze zaslat.