Web development Programiranje, dizajn, hosting i sve ostalo vezano uz razvoj web siteova |
|
20.02.2017., 13:57
|
#1
|
RPG Abomination
Registracija: Aug 2009.
Lokacija: Nosgoth
Postova: 193
|
PHP upload više datoteka odjednom
Pozdrav.
Prije svega novi sam u svemu ovome.
Zadatak mi je napisati kod u kojem korisnik prvo odabire koliko datoteka želi uploadati, nakon toga mu se pokazuje toliko opcija za upload i kada klikne submit sve se uploadaju istovremeno.
<form method="POST">
<label>Broj datoteka:</label>
<input type="number" name="quantity" min="1" max="5">
<br><br>
<input type="submit" name="submit" value="U redu">
</form>
Ovo je taj intro.
Mislio sam preko switch/case napraviti da ga preusmjeri na .php u kojem je odgovarajući kod za broj datoteka, međutim to bi značilo 5 dodatnih .php fileova, svaka sa svojim kodom, nešto tipa:
$broj = $_REQUEST['quantity'];
if(isset($_REQUEST['quantity'])){
switch($broj){
case 1:
include 'upload_1-php';
break;
case 2:
include 'upload_2.php';
break;
}
}
itd.
Problem je što mi ovdje izbacuje notice da je 'quantity' u $broj undefined index, iako normalno preusmjerava na recimo upload_2.php ako korisnik izabere 2.
E sad, uopće ne kontam kako da uploada 2 ili više datoteke odjednom
|
|
|
20.02.2017., 22:24
|
#2
|
Registrirani korisnik
Registracija: Feb 2007.
Postova: 8,219
|
Prvo, nemoj koristiti $_REQUEST. Ako radiš POST, koristi $_POST.
Drugo, ako je dopušteno korištenje JS-a, onda prvi korak možeš odraditi JS-om (pošalješ formu s 5 inputa za file, ali js-om prikažeš samo prvih).
Ako ne, onda na osnovu broja vrtiš for petlju i u svakoj iteraciji petlje u html ubaciš po jedan file input kojem naziv generiraš pomoću indexa kojeg koristiš u petlji (npr name="file_<php echo $i; >"). Možeš staviti i name="files[]", ali ti to daje rezultat kompleksniji za iteraciju kod uploada. U prvoj, jednostavnijoj varijanti, možeš u formu ubaciti i hidden input kojim ćeš poslati broj inputa koje imaš.
|
|
|
20.02.2017., 23:38
|
#3
|
Registrirani korisnik
Registracija: Apr 2013.
Postova: 28,484
|
HTML Code:
$broj = $_REQUEST['quantity'];
if(isset($_REQUEST['quantity'])){
switch($broj){
Izbacije ti gresku jer "$broj = $_REQUEST['quantity'];" pozivas i u slucaju da ne postoji.. promjeni kod u..
HTML Code:
if(isset($_REQUEST['quantity'])){
$broj = $_REQUEST['quantity'];
switch($broj){
__________________
I could die for you. But I couldn't, and wouldn't, live for you.
|
|
|
30.03.2017., 23:34
|
#4
|
Registrirani korisnik
Registracija: Oct 2011.
Lokacija: Rijeka
Postova: 34
|
PHP kompresija file-a
Pozdrav, imam problem sa upload-njem slike na server, točnije slika se uplouda ali u punoj rezoluciji što uzrokuje brzo "trpanje" memorije. Jel postoji kakav način da se nekako kompresira prije spremanja ta ista slika npr sada jedna slika ima 3MB što je malo previše jer sa vremenom bit ce ih puno. Malo sam gledao i naisao sam na PHP funkciju "imagejpeg()" pokusao sam s njom ali i dalje slika ima 3MB. Evo kak izgleda dio koda
Kod:
list($width_min,$height_min)=getimagesize($slika); // fetching original image width and height
$newwidth_min=350; // set compressing image width
$newheight_min=($height_min / $width_min) * $newwidth_min; // equation for compressed image height
$tmp_min = imagecreatetruecolor($newwidth_min, $newheight_min); // create frame for compress image
imagecopyresampled($tmp_min, $src, 0,0,0,0,$newwidth_min, $newheight_min, $width_min, $height_min); // compressing image
imagejpeg($tmp_min,"Slike/".$slika,50); //copy image in folder//
move_uploaded_file($_FILES['slika']['tmp_name'],$target);
Nisam siguran na kraju da li ova funkcija zaista bi trebala smanjit memoriju ili ne , ili jednostavno negdje griješim..
|
|
|
31.03.2017., 07:24
|
#5
|
Registrirani korisnik
Registracija: Feb 2007.
Postova: 8,219
|
Ti po ovome kreiraš thumbnail od slike, u folderu Slike.
Međutim, ako ne želiš spremiti originalnu sliku, onda ti je linija move_uploaded_file($_FILES['slika']['tmp_name'],$target); suvišna.
|
|
|
01.04.2017., 14:16
|
#6
|
Registrirani korisnik
Registracija: Oct 2011.
Lokacija: Rijeka
Postova: 34
|
Quote:
MrBlc kaže:
Ti po ovome kreiraš thumbnail od slike, u folderu Slike.
Međutim, ako ne želiš spremiti originalnu sliku, onda ti je linija move_uploaded_file($_FILES['slika']['tmp_name'],$target); suvišna.
|
Meni je cilj da smanjim veličinu slike tako da uštedim na memoriji kad se sprema na server. Da pokušao sam bez move_uploaded_file() funkcije ali onda uopće ne želi uploudati sliku, provjerio sam da li sam točno postavio "path" za spremanje preko imagejpeg() i to je ok.
|
|
|
02.04.2017., 21:09
|
#7
|
Registrirani korisnik
Registracija: Feb 2007.
Postova: 8,219
|
move_uploaded_file premješta original i taj poziv ti stvarno ne treba ako ne želiš sačuvati original.
Što se tiče spremanja thumba, sve ove funkcije ti vraćaju true or false ovisno je li uspjelo, pa možeš testirati gdje zapne. Za putanju bih ti preporučio da pokušaš s apsolutnom, ili staviš __DIR__."/slike/".$filename.'.'.$ext
|
|
|
|
Sva vremena su GMT +2. Trenutno vrijeme je: 11:01.
|
|
|
|