» »

upload zip datotek (slike)

upload zip datotek (slike)

Veron ::

gre za spletno aplikacijo, kjer uporabnik lahko naloži tudi sliko (ali več slik)

in če je več slik, se ustvari album, vendar je nerodno, da uporabnik nalaga eno po eno sliko (posebaj za tiste, ki imajo švoh upload).
Torej rad bi nekako naredil, da lahko uporabnik neko število slik spakira v ZIP datoteko in nato to zip datoteko uploada nakar strežnik razpakira in naprej opravi svoje (-> naprej ni problem)

Kak predlog?

možnost, da bi uporabnika enostavno usposobil za upload z FTP clientom odpade, ker rabim tudi podatke v mysql bazi (kdo naložil, kdaj,...)

overlord_tm ::

Zuploada na streznik, ti tam odzipas :)

Tudi prek FTP se da. Uporabnik zuploada v njegov direktorij, in potem klikne gumb, naj se slike iz njegovega FTP dir-a uvozijo. Ti poskeniras direktorij za slike in jih nalozis kamorkoli pac rabis. Za cas vzames takrat ko je uporabnik pritisnil tipko za import. Lahko pa tudi preberes cas (mtime), kdaj je bila datoteka nazadnje spremenjena.

AndyS ::

swfupload, uploadify, ... Ni točno to kar iščeš, dela pa to kar iščeš

techfreak :) ::

Veron ::

ja vidim, da sem premalo podatkov napisal, aplikacija je v php napisana, tale link of techfreak-a bo pomagal, da bom lažje poiskal dalje.

ker rabim it potem čez vsako sliko, preverit velikost, po potrebi zmanjšat in kreirat thumbnail. podatke vpisat v mysql bazo, nato pa zadeve naprej že delajo bp

Tody ::

Veron, moreš paziti tudi na omejitev PHP oz nastavitve v strežniku. Če ti bo kdo nalagal 10 mega slike :)

paco ::

	if($_SERVER['REQUEST_METHOD'] == "POST" && $_FILES["datoteka"]["type"] == "application/x-zip")
	{
		$ZipArchive = new ZipArchive();
		if($ZipArchive->open($_FILES["datoteka"]["tmp_name"]))
		{
			for($i = 0; $i < $ZipArchive->numFiles; $i++)
			{
				$ImeDatoteke = $ZipArchive->getNameIndex($i);
				$VsebinaDatoteke = $ZipArchive->getFromIndex($i);
				if($VsebinaDatoteke !== "")
				{
					//obdelaj datoteko
				}
			}
		}
		$ZipArchive->close();
	}


? :)
It iz aj.

Veron ::

wau, paco tole je k nalašč, prhranu si mi velik časa. tnx and once more tnx

fizikalac ::

PHP ima extension za zipanje.

Tukaj ti vse piše:

http://php.net/manual/en/book.zip.php

Veron ::

Naletel na nov problem in sicer, kako bi preprečil recimo, da bere directorije oz. drugače rečeno, da prebere SAMO datoteke, ki so v korenski mapi zipa?

konrektno gre za upload slik, torej da če je kar koli drugega še v zipu, enostavno ignorira.
potem drugi korak, moram preimenovati imena teh slik in nato imena shranit v sql, nekako mi tale renameIndex ne dela. :-/

trenutna koda:
				case 'zip':
					// unpack zip and upload and add to mysql database
					$ZipArchive = new ZipArchive();
					if($ZipArchive->open($_FILES["file"]["tmp_name"])) {
						for($i = 0; $i < $ZipArchive->numFiles; $i++) {
							$ImeDatoteke = $ZipArchive->getNameIndex($i);
							$VsebinaDatoteke = $ZipArchive->getFromIndex($i);
							//echo $ImeDatoteke;
							if($VsebinaDatoteke !== "") {
								//$slika	= rand(5000, 9999).fix_name($ImeDatoteke);
								$slika		= $ImeDatoteke;
								//$pika		= strrpos($slika, '.');
								//$title		= substr($slika, 0, $pika);
								//
								//$ZipArchive->renameIndex($i,$slika); // ne dela ???
								// vpiše v bazo
								mysql_query("INSERT INTO ".TBL_GALLERY." (gallery_id,image_name,image_title) VALUE ('$id','$slika','$title')");									
							}
							$ZipArchive->extractTo(ROOT.GALLERY_FOLDER.$id.'/');
						}
					}
					$ZipArchive->close();
				break;


uglavnem ideja je:
uploada zip, (kolegu na macu stalno nek folder nardi še z __MACOSX imenom ??), torej naj ignorira vse kar ni slika in ni v korenski mapi (vse mape odpadejo, just ignore) in preimenuje slike (tako da odstrani vse nedovoljene znake za filename, kot so #,!, šumniki, najraj še pike, če ni preveč komplikacij)

Zgodovina sprememb…

  • spremenil: Veron ()

Veron ::

sem zadevo rešil malo drugače (sicer gor sem še našel napako, ker je je extracto v zanki).

naredil sem tako, da prvo vse extracta v začasno mapo, nato prelista mapo, če je datoteka slika (končnica jpeg,jpg,png ali gif - mogoče bolje, da uporabim prav filetype?) jo vzame, preimenuje (odstrani nedovoljene znake) in premakne v pravo mapo.
nato pa celotno začasno mapo pobriše.

sicer nevem kako je hitra/počasna, ampak verjetno ne igra bistvene vloge, ker gre tukaj za max 30-40 slik v zip datoteki (velikost zipa je tudi max 20mb) - oz. je potrebno tukaj še kaj pazit glede velikosti?

DiTi ::

Če se to ne nalaga vsak uporabnik ampak le mogoče par določenih se nimaš kaj bat. seveda potem pobriši tisti začasno mapo.

Veron ::

to se nalaga 3-5x na teden (1 oseba). Temp fajl pa pobriše na koncu.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Autoptimize mi je zrušil stran WP -Kaj sedaj?

Oddelek: Izdelava spletišč
302706 (2023) Stari89
»

Stiskanje datotek (strani: 1 2 )

Oddelek: Pomoč in nasveti
5412249 (6459) Oberyn
»

enkripcija folderjev z 7zip - AES-256

Oddelek: Pomoč in nasveti
51104 (1041) Netrunner
»

.zip datoteka in virus

Oddelek: Informacijska varnost
162051 (1847) hojnikb
»

Zaklepanje Datotek

Oddelek: Pomoč in nasveti
182790 (2585) DirectZ

Več podobnih tem