Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]dodawanie obrazu do bazy danych
hyhyhy
post 22.02.2011, 19:48:30
Post #1





Grupa: Zarejestrowani
Postów: 135
Pomógł: 5
Dołączył: 6.02.2011

Ostrzeżenie: (0%)
-----


Witam,

Od razu zaznaczam, że w PHP/MySQL jestem początkujący, a że zdarzyło mi się tak, że natrafiłem na konieczność wrzucania obrazu do bazy danych,więc pisze tutaj, bo nie mam pojęcia, jak to ugryźć.

Przede wszystkim, czegośtam szukałem po googlach, ale znalazłem długi, tasiemcowaty skrypt który mnie przeraził. Nie oczekuję żadnego gotowca, tylko wskazówek:

- czy znając podstawy jestem w stanie takie coś zrobić?
- o jakich funkcjach powinienem poczytać?
- jak wrzucic go z formularza razem z innymi zmiennymi tekstowymi (czy tlyko input type="file" starczy)?
- czy moze sie znalezc w zwyklej tabeli ?
- czy to jest faktycznie taki wielki tasiemiec, czy da się problem zrealizować w miarę zgrabnym skryptem, i czy wymaga jakichś zabezpieczeń?

Będę wdzięczny za wskazówki smile.gif
Go to the top of the page
+Quote Post
sadistic_son
post 22.02.2011, 19:52:56
Post #2





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


Tzn nie za bardzo rozumiem co znaczy "wrzucić obraz do bazy". Pliku nie wrzuca się do bazy. Możesz za pomocą formularza uploadować go na serwer a do bazy wrzucić informacje o nim, ścieżkę, rozmiar, właściciela pliku itd.


--------------------
Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami...

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc!
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Go to the top of the page
+Quote Post
erix
post 22.02.2011, 19:53:11
Post #3





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Zabierz to stąd i przestaw tam.

Tak można podsumować Twojgeo posta.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
hyhyhy
post 22.02.2011, 19:56:07
Post #4





Grupa: Zarejestrowani
Postów: 135
Pomógł: 5
Dołączył: 6.02.2011

Ostrzeżenie: (0%)
-----


no jak mówiłem jestem zielony - teraz wiem, że baza nie ma możliwości przechowywania obrazów, tak? bo coś o polach BLOB czytałem, ale widocznie źle czytałem. W takim razie, gdyby ktoś mógłby mi doradzić, jak zorganizować miejsce dla takich plików na serwerze, tzn stworzyć jakiś folder, a jak je tam umiesczac, i jakimi funkcjami sprawdzac? dodam, ze potrzebuje dopuszczac wylacznie obrazki powiedzmy z 64kb, 50x50 px
Go to the top of the page
+Quote Post
sadistic_son
post 22.02.2011, 20:07:28
Post #5





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


Możesz sobie to wrzucić do dowolnego folderu do którego skrypt php ma dostęp. Nadaj mu prawa np. 655.
W skrypcie musisz plik uploadować i wrzucić do tego folderu. Ważna rzecz: w formularzu musi się znaleźć następująca formuła: enctype="multipart/form-data" . Więcej na ten temat tutaj.
Ogólny szablon skryptu dodawania pliku wygląda tak:
  1. if( is_uploaded_file( $_FILES['nazwa_z_formularza']['tmp_name'] ) )
  2. {
  3. //przykladowa sciezka dostepu do pliku:
  4. $katalog= 'uploads'.$_FILES['nazwa_z_formularza']['name'];
  5. if( move_uploaded_file( $_FILES['nazwa_z_formularza']['tmp_name'], $katalog)){
  6. echo 'Plik został pomyślnie uploadowany!';
  7. }
  8. else
  9. {
  10. echo 'Upload pliku nie powiódł się!';
  11. }
  12. }
  13. else
  14. {
  15. echo 'Wystąpił błąd podczas wysyłania pliku na serwer!';
  16.  
  17. }
To na razie tyle. Spróbuj u siebie i w razie pytań - pytaj.

Ten post edytował sadistic_son 22.02.2011, 20:11:30


--------------------
Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami...

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc!
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Go to the top of the page
+Quote Post
hyhyhy
post 22.02.2011, 20:49:03
Post #6





Grupa: Zarejestrowani
Postów: 135
Pomógł: 5
Dołączył: 6.02.2011

Ostrzeżenie: (0%)
-----


wielkie dzięki, działa smile.gif

teraz rozumiem, że podczas dodawania obrazka potrzbuję skopiować nazwę ->sprawdzić, czy taka już jest, jeśli tak, to dodać losowa liczbe na koniec -> wpisać w bazę

No i miałbym 3 pytania:

- jak pobrać nazwę pliku do zmiennej? (sprawdzenie, czy taki już istnieje, bo na pewno wiecej niz 2 ludzi wpadnie na nazwe avatar.gif i juz)
- potem rozumiem nazwe wrzucam do tabeli w bazie w pole link i wywalam jako czesc <img src>
- czy są jakieś funkcje, które w tym temacie mogą być pomocne (chetnie poczytam manual) odnośnie np. filtrowania plikow tylko o okreslonym rozszerzeniu, rozmiarze, objętości kB?
Go to the top of the page
+Quote Post
sadistic_son
post 22.02.2011, 23:49:40
Post #7





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


Jeśli chodzi o wrzucanie obrazków to polecałbym rozwiązać to nieco inaczej. Skoro pliki wrzuca użytkownik, który ma za pewne swój rekord w bazie to najlepiej każdemu userowi stworzyć oddzielny folder nazywający się jego numerem id lub loginem. Wtedy mogą do woli wrzucać pliki o takich nazwach jakie mają inni userzy bo przeciez kazdy ma wlasny folder.
Funkcja do tworzenia katalogów mkdir.
Co do nazwy plików, rozmiaru itd. to przejrzyj zawartość tablicy $_FILES. Np:
  1. echo '<pre>';
  2. print_r($_FILES['nazwa_pliku']);
  3. echo '</pre>';
JEśli każdy użytkownik może wrzucić tylko jeden plik to w ogóle bym pominął dodawanie nazwy pliku do bazy. Zakładając, że tworzysz każdemu userowi oddzielny folder (lub alternatywnie wszystkie pliki wrzucasz do jednego ale każdy plik nazywasz id/loginem usera) to wystarczy, że wczytasz całą zawartość folderu o nazwie id/loginu usera (w tym przypadku będzie tam tylko jeden plik), albo jeśli masz wszystkie pliki userów w jednym folderze wczytasz tylko plik nazwany id/loginem usera.
Funkcje do pobierania zawartości folderu: opendir , readdir , closedir. Używa się ich w tej kolejności. W przykładach w manualu jest to zrozumiale wyjaśnione.

Co do filtrowania plików jakie user może uploadować to sam html daje taką możliwość:
  1. <input type="file" name="..." accept="image/jpeg,image/gif" />
Ale o ile się nie mylę to wystarczy zmienić manualnie rozszerzenie i możesz wrzucać dowolny typ pliku.

Ten post edytował sadistic_son 23.02.2011, 00:03:10


--------------------
Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami...

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc!
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Go to the top of the page
+Quote Post
Valdi_B
post 23.02.2011, 10:42:09
Post #8





Grupa: Zarejestrowani
Postów: 107
Pomógł: 30
Dołączył: 19.02.2011
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Gdybyś chciał poczytać o przechowywaniu plików w polach typu BLOB, to doradzam:
http://www.webdeveloper.pl/przechowywanie_...213,1,1,pl.html

Poza tym w samej dokumentacji MySQL też coś jest:
http://dev.mysql.com/doc/refman/5.1/en/string-functions.html
- np. opis funkcji LOAD_FILE

Pozostaje pytanie, czy chce Ci się bawić w takie sztuczki (ale poczytać - nikt Ci nie zabroni).
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 8.05.2025 - 03:52