Kako napraviti browse for folder dialog (html,php,javascript)?

Započeo vojamax87, 31.01.2011, 09:16

prethodna tema - sledeća tema

vojamax87

Imam jedan problem, a to je gomila situacionih planova koji se nalaze u direktorijumima i treba ih koristiti  :D ...
Projekat 1, Projekat 1A, ... , Projekat 199. Nije bitno je koliko ih ima. Treba da uradim malu bazu koja će da sadrži naziv, opis, reon, i Referencu ka direktorijumu na mreži gde se nalazi određeni projekat i to je najmanji problem i aplikaciju koja će da ima formu za upis novih projekata u bazu i na formi da referenciram folder gde se nalazi na mreži.
Problem mi je da napravim browse for folder dialog kojim cu da označim path do root direktorijuma projekta na mreži?


[-(





Marko Аcović


vojamax87

WEB, na lokajnoj mrezi u upravnoj zgradi, mada javlja je jos jedan problem, sto neki web citaci ne mogu da otvore lokalni direktorijum ili direktorijum sa mreze ukoliko im se eksplicitno ne navede adresa npr file:///C:/.

holodoc

Možeš li da budeš malo precizniji u vezi razvojne platforme koju koristiš i šta tačno podrazumevaš pod time da "referenciraš root direktorijum na mreži"? Ako sam ja dobro razumeo ti pokušavaš da napraviš centralnu bazu koja će omogućiti evidenciju gde se koji od projekata nalazi u mreži ("Projekt 1 ima te i te karakteristike i nalazi se u lokalnoj mreži kod Pere na računaru")?

Inače znaš da neki browseri (u stvari većina) neće da ti dozvoli da koristiš remote fajlove za upload kroz forme? Čak i ako uspeš da uploaduješ fajlove na taj način imaćeš sigurno problema kasnije ako mrežne staze koristiš za njihovo referenciranje. Zamisli da neko recimo reši da promeni ime fajlu ili nešto slično :) U suštini ovde bi po meni jedini pravi problem bila centralna aplikacija sa centralnim skladištem predmeta koje bi korisnici u mreži dodavali, menjali itd.

EDIT: Sad sam tek u naslovu teme video da pominješ HTML / PHP / JavaScript ali opet mi nije baš najjasnije šta tačno hoćeš da napraviš :)
<?php
abstract class Ignorance extends Stupidity implements Unavoidable 
    private function 
__construct(){
        
parent::__destruct();
    }; 

// EOF -> life.php

vojamax87

U suštiti, pravim centralizovanu bazu (MySQL) koja će pored svih potrebnih podataka o projektu sadržati i referencu ka direktorijumu na FTP serveru ( ipak je referenciranje direktorijuma na mreži veoma težak i prilično nebezbedan posao) , uz to WEB server gde ću raditi (html, php, javascript) aplikaciju za unos podataka o projektima i upload direktorijuma , pregled i pretragu po raznim kriterijumima i mogućnost pregledanja, ne deluje kao puno težak posao ali sa obzirom na moje iskustvo približno ravno nuli i skromno znanje, valjala bi neka preporuka, trebao bih da otvorim drugu temu ali evo pitaću ovde, ja sam malo guglao ali slaba vajda , neki besplatan web develepment alat? u suštini pravom majstoru je i notepad dovoljan ali ja sam daleko od toga.
Još uvek sam Microsoftov čovek, vrlo teško se navikavam na unix/linux, ali biću uporan.

Za sada ovako razmišljajući najveći problem mi je:
1. uploadovanje direktorijuma sa korisnikovog računara preko korisnične aplikacije na FTP server.
2. Da li koristiti Anonymous-a ( sa dozvoljenim upisom) na FTP ili dodati grupe i korisnike.
3. Ako koristim korisničke grupe i imena, koristiću neku prijavu na aplikaciju kako da iskoristim taj unos da se prijavi na FTP da se ne desi posle da mi na FTP-u traži korisničko ime i šifru.


Ne zamerite ako je nešto napisano početničkim žargonom :).


holodoc

Svi junaci nickom ponikoše a? :)

Očigledno je da se još uvek nisi odlučio koji ćeš sistem koristiti za skladištenje i preuzimanje dokumenata pa bi ti moj predlog bio da koristiš klasičan HTTP umesto FTP-a s obzirom da je HTTP protokol brži i nudi neke opcije koje FTP nema (između ostalog svi imaju browsere kojim mogu da koriste klasičnu web aplikaciju dok bi za FTP varijantu sigurno ustrebao neki FTP klijent ).

Druga bitna stvar o kojoj treba da povedeš računa odmah na početku je sistem distribucije i obrade fajlova među samim korisnicima. Ukoliko korisnici trebaju da budu u mogućnosti da u bilo kom trenutku preuzmu neki od fajlova i da ga nakon izmene ponovo "vrate" u sistem onda moraš da napraviš sistem koji će biti sposoban da vodi evidenciju o revizijama dokumenata. U prevodu da se vodi evidencija i o prethodnim verzijama dokumenata a ne samo o poslednje modifikovanoj. Naravno sve ovo važi ukoliko treba voditi računa o različitim varijantama jednog te istog dokumenta.

Što se tiče skladištenja dokumenata bilo bi dobro da oni budu skladišteni na jednom centralnom mestu na web serveru ali tako da ne budu javno dostupni (recimo direktnim ukucavanjem adrese tipa www.example.com/downloads/pera-mika-muzika.pdf) već da jedino web aplikacija može da dozvoli download klijentu ako ovaj ispuni prethodno navedene uslove od strane web browsera (recimo da se korisnik uspešno identifikuje logovanjem). Ovo se lako postiže korišćenjem foldera za skladištenje koji se nalazi makar jedan nivo više od web aplikacije koja barata uploadom (vidi dijagram dole).

/ - ovo je root servera recimo
.
.
.
/var/www/public_html/ - mesto gde se recimo nalazi web aplikacija za evidenciju fajlova i koje je javno dostupno na netu (DocumentRoot folder server)
/var/www/skladiste/ - folder koji ne može da se vidi javno jer je van DocumentRoot foldera servera


Sa ovakvom folderskom šemom bi u principu mogao veoma lako da kroz web aplikaciju diktiraš ko i na koji način ima pristup fajlovima uz dodatnu pogodnost da niko ne bi mogao recimo nasumice da brlja po sadržaju skladišnog foldera. Korisnik bi morao sve zahteve za preuzimanje fajlova da radi preko web aplikacije i to bi generalno izgledalo ovako:

       
  • korisnik je ispunio uslov koji je potreban da bi se fajl preuzeo
  • aplikacija proverava u bazi podataka koji fajl treba da učita i pošalje kao odgovor na zahtev korisnika
  • korisnik dobija klasičan Save / Open dijalog u browseru (ovaj prozor može da se forsira slanjem odgovarajućih HTTP headera) ili da se dokument otvori odmah u browseru.
Možda ti sada nije baš najjasnije zbog čega sam u drugoj tački naveo da web aplikacija proverava u bazi koji fajl treba da učita i pošalje kao odgovor? Evo zbog čega. Prilikom skladištenja fajlova koji se uploaduju na server putem web aplikacija opšta je praksa da se oni nikada ne skladište pod svojim pravim imenom već pod nasumično generisanim imenom (obično je u pitanju MD5 hash za neki pseudoslučajan broj)  a da se u bazi uz taj skladišteni broj smesti pravo ime fajla (neretko se smešta i MD5 samog uploadovanog fajla da bi se potvrdilo da je fajl uploadovan bez greške).


Primera radi recimo da hoćeš da uploaduješ fajl pod imenom Đekna još nije umrla a ka'će ne znamo.avi na server. Ukoliko se odlučiš da fajl smestiš pod originalnim imenom verovatno nećeš imati nikakvih problema sve do trenutka kada budeš imao potrebu da pristupiš fajlu. Naime, nijedan Windows / Unix sistem ne može da garantuje uspešan pristup fajlovima koji u svojim nazivima sadrže Unicode znake a posebno ako se u njima nađu recimo apostrofi i slični interpunkcijski znaci. Zbog toga se odmah po uploadu fajla na server fajlu dodeljuje neko nasumično generisano ime a u bazi se vodi evidencija o pravom nazivu fajla koje se šalje klijentu svaki put kada zatraži pomenuti fajl. Sve je ovo moguće zahvaljujući sposobnosti serverskih tehnologija tipa PHP itd. da manipulišu HTTP headere :)

Primer izgleda relacije tabele u bazi gde se skladište informacije o uploadovanim fajlovima.




fajlIDidHashimeekstenzijamd5datumUploada
100302120326da1imeavi00302120326da177893250e059b3de6021.21.2121.

Što se tehnologije za izradu aplikacije tiče po meni imaš idealan slučaj za korišćenje PHP / MySQL kombinacije. Fajlove bi naravno skladištio van baze kao što sam to već gore napomenuo a za izradu cele aplikacije i testiranje mislim da ti ne bi trebalo više od nedelju dana. Naravno pre nego što uopšte počneš sa izradom moraš da sedneš i da napraviš kompletnu koncepciju aplikacije od izgleda web stranica za unos / listanje dokumenata, preko ER modela baze (možeš da koristiš relacioni model a i ne moraš za ovako jednostavne stvari) pa do osmišljavanja kako će funkcionisati ceo proces autentifikacije korisnika (da li će biti potreban login, da li će se voditi računa o revizijama itd.)


Od alata za izradu bio bi ti potreban Dreameweaver (ako ne želiš previše da se zamajavaš sa pisanjem CSS / HTML koda), neki dobar PHP editor tipa NetBeans, Eclipse PDT (može i običan Notepad ali nema potrebe za sadomazohizmom) i jedan LAMP komplet (za izradu možeš da koristiš recimo gotov XAMPP).


Sve u svemu ovo zaista nije nešto preterano komplikovan zadatak ali u svakom slučaju ako imaš neka dodatna pitanja ili ti zatreba pomoć oko bilo čega znaš gde možeš da je potražiš :) Valjda nisam bio previše konfuzan sa objašnjenjima :)
<?php
abstract class Ignorance extends Stupidity implements Unavoidable 
    private function 
__construct(){
        
parent::__destruct();
    }; 

// EOF -> life.php