DevProTalk

DevProTalk (http://www.devprotalk.com/index.php)
-   PHP (http://www.devprotalk.com/forumdisplay.php?f=9)
-   -   Provjeriti težinu fajla prije uploada. Kako? (http://www.devprotalk.com/showthread.php?t=7529)

mb_sa 26. 05. 2009. 14:50

Provjeriti težinu fajla prije uploada. Kako?
 
Pozdrav!

Da li je moguce da prije nego se neka slika upload-a na server (tacnije u temp folder) provjeri koja joj je težina (kb/mb)?

Uvijek do sada sam pravio da se fajl podigne u temp folder, dobavi se težina, uporedi sa dozvoljenom. Ako je sve ok (težina, velicina, ekstenzija ...) prebaci se iz temp foldera u željeni i to je to.

Medjutim, želio bih izbejci situaciju da kada korisnik poksava da uplaoda sliku od 3 Mb (a dozovljeno je 100 kb) da bih mu ispisao poruku 'Nedozvoljena veličina' .

Upload slike od 3 Mb poprlicno dugo traje.

Odgovaralo bi mi i neko client side rješenje, pošto vjerujem da php ovo ne moze uraditi. Uglavnom da se ne zapocinje upload fajla, ako je težina veća od dozvoljene (ne mislim na max_upload_size u php.ini fajl, već na nivou aplikacije).

Unaprijed hvala na pomoci!

LP, mb

zidoo 26. 05. 2009. 15:44

Ak me sive celije ne izdaju to je moguce samo preko ActiveX-a (znaci nije moguce :))

japan 26. 05. 2009. 15:54

moze preko flasha, pogledaj npr. uploadify

djape 26. 05. 2009. 21:54

Kôd:

<input type="hidden" name="MAX_FILE_SIZE" value="30000">

bluesman 26. 05. 2009. 21:56

^ :1011:

razno 26. 05. 2009. 22:17

Mozes koristiti neki java aplet koji ce da ti resajzuje sliku na maksimalnu dozvoljenu(cime ujedno smanjujes i velicinu fajla).Korisnicima ponudi i standardnu upload formu ako im ne radi java aplet. Ovo recimo radi facebook i mislim da dobro stedi memoriju servera.

mb_sa 27. 05. 2009. 09:25

Hvala svima na odgovrima.

@japan
Rješenje php+js+flash mi se čini kao najinteresantnije. Pokusacu nesto sa tom kombinacijom.

@razno
Jako fina ideja. Većina posala se odvija na klijnetu :) Ali nazalost ja bas nikavih dodira nemam sa javom.

@djape
Neće to obavljati posao, kao što bluesman i sam napisa.

jos jednom hvala. pozz.

cvele 27. 05. 2009. 10:50

<script>
function checkFileSize() {
oas = new ActiveXObject("Scripting.FileSystemObject");
d = document.getElementById('b');
e = oas.getFile(d.value);
alert(e.size);
return e.size;
}
</script>
<input type="file" id="b">
<input type="button" onclick="checkFileSize();" value="Proveri">

Cisto sporta radi, ovako bi to islo u IE

razno 27. 05. 2009. 12:08

Ne moras imati puno dodira sa javom, imas gotove besplatne varijante kao na primer http://postlet.com/example/ a imas i placene.Trazi Java upload applet

holodoc 24. 08. 2009. 15:17

Flash i Java bazirana rešenja su najbolja u ovom slučaju. Preporučujem SWFUpload.

MaxMagnus 26. 08. 2009. 11:58

edit: sorry, nisam video da je vec predlozheno...

Bojan Zivanovic 26. 08. 2009. 12:28

Jos jedan glas za uploadify, miljama je daleko od slicnih varijanti, vozimo ga na CMS-u vec neko vreme...

holodoc 26. 08. 2009. 19:43

Citat:

Originalno napisao Bojan Zivanovic (Napišite 72673)
Jos jedan glas za uploadify, miljama je daleko od slicnih varijanti, vozimo ga na CMS-u vec neko vreme...

Jedini problem sa njim je što se oslanja na jQuery biblioteku. SWFUpload nema tih ograničenja.

MaxMagnus 27. 08. 2009. 01:01

Citat:

Originalno napisao holodoc (Napišite 72701)
Jedini problem sa njim je što se oslanja na jQuery biblioteku. SWFUpload nema tih ograničenja.

a to je neki minus??? :1007:

holodoc 27. 08. 2009. 12:15

Citat:

Originalno napisao MaxMagnus (Napišite 72711)
a to je neki minus??? :1007:

Često jeste kada je neophodna samo neka minimalna Javascript funkcionalnost gde nema potrebe da se ceo DOM stranice zagadi prototipovima koji nikada neće biti korišćeni.

bluesman 27. 08. 2009. 12:27

Ako već imaš potrebu za nekim upload-om pa još i proveravaš veličinu fajla pre uploada i sigurno imaš još gomilu "munja" na strani, gotovo sigurno imaš i neki "teži" js na tom sajtu - već je "zagađeno". Takođe, možeš da uključiš jq samo na toj strani ako ti ne treba nigde drugde.

A opet, ako ne bi da "zagađuješ" baš ni malo, uvek možeš da uzmeš kod pa prepraviš da ne koristi jquery nego da bude standalone. Samo je pitanje šta je "skuplje".

ivanhoe 27. 08. 2009. 15:42

koje su razlike izmedju uploadify i swfupload-a ? Jel ima neki prakticnih razlika, ili je samo sminka u pitanju?

holodoc 27. 08. 2009. 21:16

Citat:

Originalno napisao bluesman (Napišite 72717)
Ako već imaš potrebu za nekim upload-om pa još i proveravaš veličinu fajla pre uploada i sigurno imaš još gomilu "munja" na strani, gotovo sigurno imaš i neki "teži" js na tom sajtu - već je "zagađeno". Takođe, možeš da uključiš jq samo na toj strani ako ti ne treba nigde drugde.

A opet, ako ne bi da "zagađuješ" baš ni malo, uvek možeš da uzmeš kod pa prepraviš da ne koristi jquery nego da bude standalone. Samo je pitanje šta je "skuplje".

Nažalost problem JavaScript frameworkova ne leži u "težini" fajlova koje je neophodno učitati na stranici da bi framework mogao da se koristi. Čak štaviše to je problem koji se relativno lako rešava recimo serverskom HTTP kompresijom fajlova biblioteke (koju nažalost mali broj developera koristi jer se boji da produkcioni serveri neće podržavati ovu opciju) mada nakon prvog učitavanja biblioteke i onako ostaju keširane u browseru. Problem je u tome što se učitavanjem bilo koje od JS biblioteka DOM stranice bukvalno preplavi prototipovima biblioteke iako 99.9% elemenata (nodova) na stranici jednostavno neće zahtevati nijedan od njih što za neminovnu posledicu kao prvo ima povećanje memorije koju browser konzumira a kao drugo dolazi do smanjenja brzine rada klijentskog dela aplikacije koju i onako pokreće mrcina od jezika kakav je JavaScript.

Što se tiče prepravljanja jQuery pluginova tako da ne koriste jQuery biblioteku mislim da tako nešto samo po sebi nema preterano smisla. Zbog čega bi neko uopšte pokušavao da prepravlja bilo koji plugin tako da ne koristi sopstvenu osnovu ako može odmah da bez ikakve prepravke koristi gotovo alternativno rešenje koje nudi potpuno istu funkcionalnost?

Naravno ja nisam isključiva osoba i moji komentari protiv JavaScript frameworka ne trebaju da ostave utisak da sam potpuno protiv njihovog korišćenja. Naravno da nisam ali treba uvek imati u vidu koje su prednosti i nedostaci njihovog korišćenja kao i činjenicu da navikavanje na framework sisteme može da olenji developere i priredi im veoma gadno iznenađenje kada dođu u situaciju da kreiraju visokoprofilne aplikacije gde su perfomanse klijentske strane izuzetno važne a usput nije dozvoljeno korišćenje bilo kakvih JavaScript frameworka.

Citat:

Originalno napisao ivanhoe (Napišite 72731)
koje su razlike izmedju uploadify i swfupload-a ? Jel ima neki prakticnih razlika, ili je samo sminka u pitanju?

Oba u izvornom obliku izgledaju gotovo identično stim što je SWFUpload donekle lakše prilagoditi specifičnim vizuelnim potrebama s obzirom da se recimo prilagođavanje izgleda dugmadi vrši na nivou CSSa dok se kod Uploadify plugina prilagođavanje vrši na nivou Flasha. Takođe, Uploadify ima podužu istoriju nezadovoljnih developera koji su potražili alternativu u vidu SWFUploada koji je do skora bio sastavni deo Youtube upload sistema dok nije zamenjen specijalnim novim "custom made" rešenjem. Veliki broj sajtova čija je primarna aktivnost upload fajlova posetilaca upravo koristi SWFUpload (picturepush.com itd.) a po "difoltu" SWFUpload se isporučuje i uz "WordPress" i solidan broj drugih web aplikacija. Jedan od po meni nedostataka Uploadify plugina sam već pomenuo a to je zavisnost od jQuery biblioteke i činjenice da ne koriste svi sajtovi, niti su u stanju da koriste, jQuery biblioteku niti neki drugi JavaScript framework.

Da ne bude da čisto navijam za SWFUpload bez razloga. Jednostavno ukoliko na sajtu već postoji učitan jQuery skoro da i ne postoji razlog da se bilo ko zamara nekim drugim rešenjem kao što je SWFUpload jer je krajnji rezultat isti. Sa druge strane ukoliko se radi o potpuno "custom made" projektu gde ili nije dozvoljeno korišćenje biblioteka kao što su jQuery, prototype itd. SWFUpload je jednostavno bolje rešenje koje usput obezbeđuje realizaciju uploada kroz čist JavaScript i rasterećen DOM model stranice.

Bojan Zivanovic 28. 08. 2009. 12:15

Vrlo zanimljivo.

Ono što mene zanima je: koji je to primer visokoprofilne aplikacije gde su performanse toliko bitne da se više isplati zanemariti sve pogodnosti koje pruža jedan jQuery?

Takođe, da li imaš tačne brojke kada je samo usporenje u pitanju? I da li je to nešto što korisnik sam može da oseti? Ipak, ako je usporenje tipa "0.1s", onda ne korišćenje JS biblioteke spada više u red mikro-optimizacija koja mnogo više vremena pojede nego što donese dobrog.

ljtruba 28. 08. 2009. 23:05

Moze jedno malo offtopic pitanje.

Treba mi uploader da ga integrisem u CMS za dodavanje proizvoda.
Da li je moguce da na stranici za dodavanje proizvoda se vrsi upload i da odmah putanja do slike bude polje koje se upisuje u bazu?

holodoc 30. 08. 2009. 20:21

Malo kasnim sa odgovorom ali eto, obaveze ne smeju da trpe.
Citat:

Originalno napisao Bojan Zivanovic (Napišite 72753)
Vrlo zanimljivo.

Ono što mene zanima je: koji je to primer visokoprofilne aplikacije gde su performanse toliko bitne da se više isplati zanemariti sve pogodnosti koje pruža jedan jQuery?

Takođe, da li imaš tačne brojke kada je samo usporenje u pitanju? I da li je to nešto što korisnik sam može da oseti? Ipak, ako je usporenje tipa "0.1s", onda ne korišćenje JS biblioteke spada više u red mikro-optimizacija koja mnogo više vremena pojede nego što donese dobrog.

Mikro-optimizacija može da bude gubljenje vremena samo u slučaju da se radi o web aplikacijama gde performanse i opterećenost hardverske infrastrukture nisu toliko bitne stavke. U slučaju visokoprofilnih (kriterijum se uglavnom može svesti na veliku posećenost) aplikacija sa dnevnom posetom od 100 000+, gde je svaki "potrošeni" bajt važan, mikro-optimizacija je i više nego bitna tako da bez obzira na prednosti koje pružaju JS framework sistemi količina generičkih i nespecifičnih funkcionalnosti koje dolaze u pakovanjima od po "par desetina ili stotina" kilobajta po frameworku jednostavno nisu opcija.

S obzirom da trenutno zaista nemam mnogo vremena hoću još jednom da naglasim da nisam kategoričan protivnik JS frameworka ali i da ih lično ne smatram rešenjem koje treba da se koristi u apsolutno svakoj zamislivoj situaciji niti se navikavati na to da budu jedini izvor rešenja svih problema jer će vam se desiti da postanete deo projekta (možda čak i preuzmete ceo projekat) gde frameworke nije dozvoljeno koristiti ili jednostavno postoji već neka baza koda koji je pisan u čistom JavaScriptu. A tada je malo teško objasniti nekome zašto ste recimo zbog čistog selektovanja CSS selektora izabrali da naknadno učitate kompletnu biblioteku "od par desetina do par stotina kilobajta" umesto sledećeg bloka :)
Kôd:

function __$(id){
    return document.getElementById(id);
}

Citat:

Originalno napisao ljtruba (Napišite 72770)
Moze jedno malo offtopic pitanje.

Treba mi uploader da ga integrisem u CMS za dodavanje proizvoda.
Da li je moguce da na stranici za dodavanje proizvoda se vrsi upload i da odmah putanja do slike bude polje koje se upisuje u bazu?

Obe skripte koje su ponuđene u ovoj temi poseduju svoju serversku-komponentu (uglavnom pogonjenu PHPom) tako da zaista ne bi trebalo da postoji problem da nakon uploada tvoja forma prilikom obrade sadrži i podatak o samom uploadovanom fajlu. Takođe, kada već pominješ putanju uploadovanog fajl moja preporuka je da ne skladištiš bilo kakve podatke o putanjama u bazu podataka. Najčešće primenjivana tehnika je da se fajl nakon uploada preimenuje u neki slučajno generisani hash (recimo MD5 od nekog slučajnog broja) koji se skladišti u bazu kao ime fajla. Primera radi uploadovani fajl miki_maus.jpg se za potrebe skladištenja u bazu preimenuje u a0f27638260642afb474516cc9184.jpg a konkretan fajl uploaduje na mesto predviđeno za to. Dakle u bazu nije poželjno nikada snimati bilo kakve staze i putanje do fajlova.


Vreme je GMT +2. Trenutno vreme je 22:40.

Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.

Mišljenja, saveti, izjave, ponude ili druge informacije ili sadržaji nastali na Sajtu su vlasništvo onoga ko ih je kreirao, a ne DevProTalk.com, tako da ne morate da se oslanjate na njih.
Autori poruka su jedini odgovorni za ovakve sadržaje. DevProTalk.com ne garantuje tačnost, kompletnost ili upotrebnu vrednost informacija, stavova, saveta ili datih izjava. Ne postoje uslovi pod kojima bi mi bili odgovorni za štetu ili gubitak koji je posledica bilo čijeg oslanjanja na nepouzdane informacije, ili bilo kakve informacije nastale kroz komunikaciju između registrovanih članova.
Web sajt može sadržavati linkove na druge web sajtove na Internetu ili neke druge sadržaje. Ne kontrolišemo niti podržavamo te druge web sajtove, niti smo pregledali bilo kakve sadržaje na takvim sajtovima. Mi nećemo biti odgovorni za legalnost, tačnost ili prikladnost bilo kog sadržaja, oglasa, proizvoda, usluga ili informacije lociranim na ili distribuiranih kroz druge web sajtove, niti za bilo kakvu štetu nastalu kao posledica takvih informacija. DevProTalk.com drži i čuva druga prava vlasništva na web sajtu. Web sajt sadrže materijale zaštićene copyright-om, zaštitne znakove i druge informacije o pravu vlasništva ili softver. Članovi mogu poslatu informacije zaštićene pravima vlasništva njihovih nosilaca i ona ostaju zaštićena bez obzira da li su oni koji prenose te informacije to naveli ili ne. Osim informacija koje su u javnom vlasništvu ili za koje dobijete dozvolu, nemate pravo da kopirate, modifikujete ili na bilo koji način menjate, objavljujete, prenosite, distribuirate, izvršavate, prikazujete ili prodajte bilo koju informaciju zaštićenu pravima vlasništva. Slanjem informacija ili sadržaja na bilo koji deo DevProTalk.com, Vi automatski dozvoljavate i predstavljate garanciju da imate pravo da dozvolite DevProTalk.com ili članovima DevProTalk.com bespovratnu, kontinualnu, neograničenu, globalnu dozvolu da koriste, kopiraju, izvršavaju, prikazuju i distribuiraju takve informacije i sadržaje i da iz takvih sadžaja koriste bilo koji deo u bilo koje svrhe, kao i pravo i dozvolu da koriste gore navedene sadržaje. Svi zaštitni znakovi (trademarks), logotipi, oznake usluga, firme ili imena proizvoda koji se pominju na ovom web sajtu su vlasništvo kojim raspolažu njihovi vlasnici.