Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Mysql/Js/Ajax]Zaawansowany upload plików
Forum PHP.pl > Forum > PHP
tibia009
Witam!
Proszę wszystkich o pomoc.
Chcialbym zrobic upload plikow, ktory byl by ladny graficznie z paskiem postepu. Mozna by uploadowac wiele plikow naraz. Chcialbym, zeby upload odroznial formaty plikow i przypisywal je do wyszczegolnionych kategorii. Np. jpg do zjec , avi do filmow itp. Chcialbym rowniez zeby , gdy ktos jest zalogowany- jego dane sa w sessji i bazie danych - jego dane zostaly pobranie i osadzily sie w bazie danych. W bazie danych zeby bylo zgromaczone: kto dodal , kiedy dodal, jaki plik, nr.pliku(przypisze sie to do uzytkownika(tzn, tylko uzytkownik zalogowany i ten ktory dodal ten plik bedzie mogl go usunac i widziec w swoim profilu)), stworzony zosanie nr pliku. Nie wiem czy wiecie o co chodzi, np. jak uploadujesz na rapid share to tworzy sie nr. A32D3A323, ktory jest indywidualny i unikatowy.

Chcialbym rowniez zeby po wpisaniu tego nr www.adresstrony.com/piki/NUMER zostala wczytana stronka mozliwoscia pobrania plikow.

Prosze w miare mozliwosci o pomoc jak to zrobic i od czego zaczac.exclamation.gif. I jaka metoda bylo by zrobic to najlepiej.
Plik zapisze sie w folderze na serwerze, anie w bazie danych- tam zostanie zapisana tylko sciezka do pliku.

Wiem ze pisalem w miare nie skladnie i mozna mnie nie zrozumiec. Prosze o luzne pomysly i idee. Z gory dziekuje za pomoc!
Blame
Hmm. Ja zacząłbym od stworzenia tabeli w bazie z polami kolejno adrespliku, dodal, idpliku ewentualnie jeszcze jakieś inne dane. Potem stworzyłbym formularz upload'u, który pobierałby nazwę aktualnie zalogowanego usera, nazwę pliku i przypisywał mu unikatowe id, np. za pomocą time. Potem to wszystko wrzucamy do bazy. Następnie zrobił bym skrypt, który za pomocą $_GET pobierałby id pliku a następnie wysyłał plik do użytkownika używając położenia pliku z pola adrespliku. Co do odróżniania typów plików to jest taka fajna funkcja pathinfo, dzięki niej zrobisz parę if'ów które ustalałyby zmienną określającą folder docelowy w zależności od rozszerzenia i gotowe.
cojack
To ja bym proponował pierw od kursu html, następnie kurs jquery, następnie kurs php, no i kurs sql, to będzie jakiś rok, półtora roku nauki, później z pół roku praktyki (zależy jak u kogo, czy miałeś styczność z programowaniem wcześniej czy nie), do 2 lat.

Sory kolego wróć za 3 lata i pokarz jak to napisałeś.

Nie myśl sobie że ktoś napisze takie coś za darmo dla Ciebie, bo tego jest już multum w internecie, wystarczy poszukać ajax upload, jquery ajax upload, i na pewno coś znajdziesz co by Cie uszczęśliwiło.
tibia009
cojack jak masz zamiar umieszczac takie pomoce to lepiej sie nie udzielaj.
Mam stworzona baze danych z potrzebnymi tabelami do plikow, rowniez do uzytkownikow.
Nie wiem jak np. wygenerowac numer pliku który by sie nie powtarzal a byl dodatkowo adresem do pliku.
Myslalem zeby w bazie plikow dodac tabele w ktorej bedzie Nr.uzytkownika ktory dodal. Bedzie to nr uzytkownika ktory bedzie jak wiadomo indywidualny i napewno inny uzytkownik nie bedzie mogl "miec" tego pliku.

Czy przy uploadzie musi zostac stworzony plik o nazwie GEJA321 , czy sam nr. w bazie danych pozwoli na podstawie jakiegos pliku podstawic zmienne z bazy danych i to wystarczy to przedstawinia pliku?

I jak mialby wygladac sam adres do pliku? poprostu ../files/$zmienna?
darko
Cytat
Chcialbym rowniez zeby po wpisaniu tego nr www.adresstrony.com/piki/NUMER zostala wczytana stronka mozliwoscia pobrania plikow.


Jeśli masz już tabelę user to można zrobić w ten sposób, że unikatowy numer użytkownika tworzysz na podstawie md5 z jakiś niezmiennych pól w tabeli użytkownika, np. loginu i daty dodania do bazy. Wygenerujesz w ten sposób unikalny skrót md5 i tak nazwiesz katalog użytkownika (plus dostęp do tego folderu). Mankamentem takiego rozwiązania mogą być kolizje (tylko w przypadku jeśli masz baaaardzo dużo zarejestrowanych userów). Numer ten możesz przechowywać w bazie danych i powiązać z plikami, do których user ma pełny dostęp (z usuwaniem włącznie).

Co do uploadu plików to rzeczywiście warto skorzystać z gotowych rozwiązań, na przykład http://www.fyneworks.com/jquery/multiple-file-upload/ lub http://www.uploadify.com/
tibia009
Dziekuje za pomoc.
Jeszcze raz chcialbym zapytac w jakis sposob losowac numer ktory: sie nie powtorzy, bedzie nie pokolei(nie chodzi o numer bo wtedy kazdy moglby wpisac i mial by dostep do pliku), nr dlugi w celu przechowywania naprawde wielu plikow powyzej 100 mln.
darko
to może token + jakiś określony ciąg znaków (jeśli wyczerpiesz wszystkie możliwości)? :

  1. echo md5(uniqid(rand(), true));
cojack
  1. sha1(time());
darko
cojack lepiej

  1. echo sha1(microtime(true));


bo dla dwóch żądań w tej samej sekundzie wygenerujesz dwa takie same ciągi znaków (sprawdź)
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.