Incarcare numar maxim de poze in director, cu nume ordonate
-
- Mesaje:80
Incarcare numar maxim de poze in director, cu nume ordonate
In prezent se poate incarca numai o poza pentru fiecare user. Se incarca imaginea si se redenumeste. Cum fac sa se poata incarca mai multe foto (adica sa aiba o logica in redenumire ca sa fie distincte) si sa pot seta numarul maxim de imagini ce pot fi uploadate?
MarPlo
Mesaje:4343
Poti utiliza functia glob().
Vezi cum poti folosi acest exemlu:
Vezi cum poti folosi acest exemlu:
Cod: Selectaţi tot
$files = glob('dir/*.jpg'); // array cu toate fisierele JPG din "dir/"
$nrf = count($files); // numarul de fisiere gasite
// daca sunt mai putin de 4 fisiere
if($nrf < 4) {
$file = 'dir/nume'. ($nrf + 1) .'.jpg'; // setare nume cu numar de ordine pt urmatorul fisier
// Incarca fisierul ...
}
else echo 'Sunt 3 fisiere incarcate';
adrian_ady
Mesaje:80
Linia de upload folosita in prezent:
Am facut cateva incercari dar nu am 'brodit-o'. Asa ar trebui sa devina linia($file = 'dir/nume'. ($nrf + 1) .'.jpg';)?:
Asa arata clasa Upload
Cod: Selectaţi tot
$upload->uploadImageNoResizeRenameWidthHeight('file',"foldere/furnizori/id_".$login->getMemberId()."","id_".$_GET['id'],512000,array("jpeg"),120,90);
Cod: Selectaţi tot
$upload->uploadImageNoResizeRenameWidthHeight('file',"foldere/furnizori/id_".$login->getMemberId()."","id_".$_GET['id']."-".($nrf+1),512000,array("jpeg"),120,90);
Cod: Selectaţi tot
// upload imagine gif sau jpg fara redimensionare cu redenumire si cu conditia sa aiba anumita latime si inaltime
public function uploadImageNoResizeRenameWidthHeight($file,$cale,$rename,$maxsize,$allow_extension,$w,$h)
{
//$file = numele imputului de tip file
//$cale = calea pozei pe server fara slash la sfarsit
//$rename = numele nou al pozei
//$maxsize = dimensiumea maxima a fisierului permisa
//$allow_extension = extensii permise array("jpeg","/gif")
$file_name = $_FILES[$file]['name'];
$file_type = $_FILES[$file]['type'];
$file_size = $_FILES[$file]['size'];
$tip = substr($file_type,-4);
@list($w1,$h1) = getimagesize($_FILES[$file]['tmp_name']);
if($file_size > $maxsize) // daca e mai mare decat dimensiunea maxima
{
$this->mess = "Dimensiunea maxima permisa este ".($maxsize/25600)." Kb";
}
else if(!in_array($tip,$allow_extension))
{
$this->mess = "Acest format de fisier nu este permis";
}
else if(($w1 != $w) && ($h1 != $h))
{
$this->mess = "Va rugam sa uploadati imagine de <b>".$w." x ".$h." pixel</b>";
}
else if (file_exists($cale.'/'.$file_name)) // daca fisierul neredenumit exista in director
{
$this->mess = "Acest fisier exista deja";
}
else
{
if($tip == "jpeg") $ext = "jpg";
if($tip == "/gif") $ext = "gif";
if($tip == "flash") $ext = "swf";
$new_name = $rename.'.'.$ext;
$new_path = $cale.'/'.$new_name;
if(file_exists($cale.'/'.$new_name))
{
$this->mess = "Acest fisier exista deja";
}
else
{
move_uploaded_file($_FILES[$file]['tmp_name'], $cale.'/'.$new_name);
chmod($new_path,0777);
$this->filename = $new_name;
$this->mess = "";
}
}
}
MarPlo
Mesaje:4343
Apelarea metodei din acea clasa pare in regula.
Poate ca nu e definita bine variabila $nrf cu numarul de poze din director.
Poate ca nu e definita bine variabila $nrf cu numarul de poze din director.
Cod: Selectaţi tot
$files = glob('foldere/furnizori/id_'. $login->getMemberId() .'/*.jpg');
$nrf = count($files); // numarul de fisiere gasite
adrian_ady
Mesaje:80
Am reusit pana la urma sa uploadez imaginile, am schimbat clasa, calea, etc. Problema apare cand se doreste sa se stearga unele fotografii sau cand se alege una din ele ca fiind cea care va fi expusa prima(in mesajul succint).
Cu formula 'Adauga foto', sa zicem din intamplare caci era varianta pentru upload numai o imagine, merge bine; cu cea pentru stergere insa nu functioneaza nimik. Eu m-am straduit, am facut ce am crezut dar fara rezultate; acum apelez din nou la un expert.
Cu formula 'Adauga foto', sa zicem din intamplare caci era varianta pentru upload numai o imagine, merge bine; cu cea pentru stergere insa nu functioneaza nimik. Eu m-am straduit, am facut ce am crezut dar fara rezultate; acum apelez din nou la un expert.
Cod: Selectaţi tot
//INCARCARE (IN HEAD)
if(isset($_POST['Upload']))
{
$cale = "foldere/furnizori/id_".$login->getMemberId()."/oferta_id_".$_GET['id'];
$files = glob($cale . "/*.jpg");
if ($files)
$count = count($files);
$total_entries = $count / 2;
$upload = new Upload();
if($_GET['addfoto']=='foto')
$upload->uploadImageThumbRenameResize('file',"foldere/furnizori/id_".$login->getMemberId()."/oferta_id_".$_GET['id'],($total_entries + 1),512000,500,113,array("jpeg"));
if($upload->getMessage()) $mesaj_upload = '<br>'.$upload->getMessage();
else header('Location: '.$_SERVER['PHP_SELF']);
//UPLOAD SI STERGERE
<div id="divupload" style="display:<? if(isset($_GET['addfoto'])) echo 'block'; else echo 'none';?>; margin: 0 auto; max-width: 500px;">
<form action="" method="post" enctype="multipart/form-data">
<p class="error"><?=$mesaj_upload?></p>
<span class="mic-gri">Incarcati numai imagini format .jpg 135 x 96 px, maxim 20Kb.
[<a nohref="javascript://" onClick="getElementById('divupload').style.display='none'" style="cursor: pointer;"><b> <i class="fa fa-close"></i> </b></a>]</span>
<input name="file" type="file" class="inputcol" id="file" style="max-width: 300px;" />
<button class="buton" name="Upload" id="Upload" onclick="document.formName.submit();"><i class="fa fa-upload"></i> Upload</button>
</form>
<br />
</div>
//---------------------------
<a style="cursor: pointer;" onClick="location.href='<?=$_SERVER['PHP_SELF']?>?addfoto=foto&id=<?=$id?>'" style="cursor:pointer;">Adauga foto</a>
<br /><br />
<a style="cursor: pointer;" onClick="location.href='<?=$_SERVER['PHP_SELF']?>?deletefoto=foto&id=<?=$id?>'">Sterge foto</a>
//DISPLAY FOTO
<?
$cale = "foldere/furnizori/id_".$login->getMemberId()."/oferta_id_".$id;
$files = glob($cale . "/*.jpg");
if ($files)
$count = count($files);
{
?>
<div class="gallery" id="gallery-small">
<?
$total_entries = $count / 2;
$limit = $total_entries;
$start_img = 1;
for($i=$start_img; $i<min($total_entries + 1, ($start_img + $limit)); $i++) {
echo '<a href="'.$cale.'/'. $i .'_big.jpg" rel="gallery" name=".$i."><img src="'.$cale.'/'. $i .'_small.jpg" alt=" '. $i .' " title="Imagine '. $i .'" /></a>';
}
?>
<br /><br />
</div>
<script type="text/javascript">
$(document).ready(function() {
$('#gallery-small a').fancybox();
});
</script>
<?
}
?>
MarPlo
Mesaje:4343
Partea de sters un anumit fisier din director, cand sunt mai multe e mai complicata. Trebuie creat un fel de FileManager
La clic pe un buton /Link se afiseaza intr-o fereastra fisierele /imaginile din director, apoi la clic pe imagine se adauga cu javascript numele ei intr-un input-hidden, iar la click pe un buton Submit se acceseaza scriptul php de stergere, care sa preia numele din acel Input.
Asta e ideea, pe partea de cod nu ma bag sa fac eu.
La clic pe un buton /Link se afiseaza intr-o fereastra fisierele /imaginile din director, apoi la clic pe imagine se adauga cu javascript numele ei intr-un input-hidden, iar la click pe un buton Submit se acceseaza scriptul php de stergere, care sa preia numele din acel Input.
Asta e ideea, pe partea de cod nu ma bag sa fac eu.
adrian_ady
Mesaje:80
Imi dau seama de complicitatea functiei. Am optat pentru a sterge cate o imagine(small + big) pe click, incepand cu ultima adaugata($last). Cum formulez valoarea $last?
Cod: Selectaţi tot
if(isset($_POST['Upload']))
{
$cale = "foldere/furnizori/id_".$login->getMemberId()."/oferta_id_".$_GET['id'];
$files = glob($cale . "/*.jpg");
if ($files)
$count = count($files);
$total_fotos = $count / 2;
if($_GET['addfoto']=='foto')
$upload = new Upload();
$upload->uploadImageThumbRenameResize('file',"foldere/furnizori/id_".$login->getMemberId()."/oferta_id_".$_GET['id'],($total_fotos + 1),512000,800,566,array("jpeg"));
if($upload->getMessage()) $mesaj_upload = '<br>'.$upload->getMessage();
else header('Location: '.$_SERVER['PHP_SELF']);
}
if(isset($_GET['deletefoto']))
{
$last= ???
{
$cale_small = "foldere/furnizori/id_".$login->getMemberId()."/oferta_id_".$_GET['id']."/".$last."_small.jpg";
$cale_big = "foldere/furnizori/id_".$login->getMemberId()."/oferta_id_".$_GET['id']."/".$last."_big.jpg";
if(file_exists($cale_small)) unlink($cale_small);
if(file_exists($cale_big)) unlink($cale_big);
}
MarPlo
Mesaje:4343
Daca ai cate 2 tipuri ale aceleiasi imagini (small si big), preiei cu glob() fisierele si imparti numarul la 2.
Incearca asa:
Incearca asa:
Cod: Selectaţi tot
$last = count(glob($cale . "/*.jpg")) / 2;
adrian_ady
Mesaje:80
Merci, am inteles ideea, am rezolvat! Multumesc!
Subiecte similare
- Eroare la incarcare json
JavaScript - jQuery - Ajax Primul mesaj
Bună MariusUltimul mesaj
Cum rezolv să imi încarce tot fișierul .json
eoroare la
//fetch(endpoint)
//.then(blob => blob.json())
//.then(data =>...
Fisierul json de la acea adresa are peste 50 MB, e cam mare pentru preluare si procesare direct in pagina (client side) cu javascript.
A) Indicat... - Afisare numar cel mai mare dintr o coloana
PHP - MySQL - XML Primul mesaj
Bună MarploUltimul mesaj
Vreau să extrag din coloan pret cel mai mare numar ca de exemplu 4444.
Mie imi afisează 54 în loc de 4444, dacă în loc de 4444 modific...
Am schimbat `pret` varchar(20) DEFAULT NULL in `pret` int(11) NOT NULL ca la tine si merge.
Multumesc