Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> PHP - Upload Zdjęć
Reptile ReX
post
Post #1





Grupa: Zarejestrowani
Postów: 119
Pomógł: 0
Dołączył: 19.01.2008

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


Witam, nie potrafię dobrze sformułować nazwy tematu więc rozwinę tutaj.

Mam zamiar napisać funkcję dodawania produktu do bazy danych, chcę to podzielić na Kroki.

Pierwszy Krok - Dane produktu.
Po przejściu do następnego kroku dane są zapisywane w sesji (Aby nie zasypywać bazy danych, gdy ktoś np. będzie odświeżać stronę)

Kolejny krok to upload zdjęć, i właśnie tutaj mam problem.
Chcę, aby user miał podgląd wgranych zdjęć.
Ale także nie chce niepotrzebnie zasypywać serwera zdjęciami itd.

Dam prosty przykład

Człowieczek uzupełnia formularz, dodaje zdjęcia i nagle jednak decyduje się nie wystawiać produktu, wyłącza przeglądarkę, a zdjęcia jednak zostają na serwerze.

I teraz moje pytanie, czy możliwe jest wyświetlenie wgrywanych zdjęć bez wrzucania ich na serwer ?
Go to the top of the page
+Quote Post
tsdek
post
Post #2





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 16.05.2011

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


Zrobiłem prosty skrypt uploadu wink.gif:

upload.php
  1. <form enctype="multipart/form-data" action="upload2.php" method="POST">
  2. <div align="center">
  3. <p><strong>Dodaj plik tylko i wylacznie z inna nazwa
  4. dlatego ze ta sama nazwa, powoduje zmiane starego zdj na te nowe. </strong></p>
  5. <p class="style3">Plik nie może być większy niż 50mb.</p>
  6. <p>
  7. <input type="hidden" name="MAX_FILE_SIZE" value="5000000" />
  8. <input name="plik" type="file" />
  9. <input type="submit" value="Wyślij plik" />
  10. </p>
  11. </div>
  12. </form>


upload2.php
  1. <?php
  2. $plik_tmp = $_FILES['plik']['tmp_name'];
  3. $plik_nazwa = $_FILES['plik']['name'];
  4. $plik_rozmiar = $_FILES['plik']['size'];
  5.  
  6. if(is_uploaded_file($plik_tmp)) {
  7. move_uploaded_file($plik_tmp, "fotos/$plik_nazwa");
  8. echo "Plik: <strong>$plik_nazwa</strong> o rozmiarze
  9. <strong>$plik_rozmiar bajtów</strong> zostal przeslany na serwer!";
  10.  
  11. }
  12. $open = fopen("gdziemawyslac.php", "a+");
  13. fwrite($open, ",<a href='fotos/$plik_nazwa' rel='lightbox' title='tylul' ><img src='fotos/$plik_nazwa' border='0' weight='128' height='96'></a>");
  14. fclose($open);
  15.  
  16. $open = fopen("gdziemawyslac.php", "a+");
  17. fwrite($open, ",<a href='fotos/$plik_nazwa' rel='lightbox' title='tytul' ><img src='fotos/$plik_nazwa' border='0' weight='128' height='96'></a>");
  18. fclose($open);
  19. ?>


Potrzebujesz:
  1. Lightboxa ze strony: <a href="http://www.huddletogether.com/projects/lightbox2/" target="_blank">http://www.huddletogether.com/projects/lightbox2/</a>
Go to the top of the page
+Quote Post
Reptile ReX
post
Post #3





Grupa: Zarejestrowani
Postów: 119
Pomógł: 0
Dołączył: 19.01.2008

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


Chyba nie do końca zrozumiałeś moje pytanie

Cytat
I teraz moje pytanie, czy możliwe jest wyświetlenie wgrywanych zdjęć bez wrzucania ich na serwer ?


Ja wiem jak napisać skrypt uploadu + wyświetlanie zdjęć, da radę to zrobić nawet w czystym PHP bez JS.
Tylko co z tego jak i tak i tak zdjęcia muszą zostać wgrane na serwer.

Jeżeli nie ma takiej możliwości po prostu napiszę skrypt uruchamiany na cronie co 24h.
Będzie on usuwał zdjęcia, które nie zostały dodane do bazy danych.

Ten post edytował Reptile ReX 16.05.2011, 13:30:09
Go to the top of the page
+Quote Post
ActivePlayer
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 1 224
Pomógł: 40
Dołączył: 6.07.2004
Skąd: Wuppertal

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


tak, ale do czasu kiedy nie obsłużysz ich (np przez move_uploaded_files) pliki znajdują się w folderze tmp/temp i zostaną po pewnym czasie usunięte.
jesli musisz je jednak gdziesz przekopiowac, to mozesz napsiac skrypt, który cyklicznie sprawdzi kazdy plik w folderze z uploadami i zobaczy czy masz identyczny wpis w bazie danych, jesli nie, to znaczy ze plik jest nie potrzebny i go usunie.
Go to the top of the page
+Quote Post
Reptile ReX
post
Post #5





Grupa: Zarejestrowani
Postów: 119
Pomógł: 0
Dołączył: 19.01.2008

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


A czy da radę wyświetlić obrazki z folderu tmp/temp ?
A po przejściu do kolejnego kroku wgrać je na serwer?

Jeżeli nie no to tak jak mówisz zrobię cykliczny skrypt.
Go to the top of the page
+Quote Post
ActivePlayer
post
Post #6





Grupa: Przyjaciele php.pl
Postów: 1 224
Pomógł: 40
Dołączył: 6.07.2004
Skąd: Wuppertal

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


pliki te usuwane są zaraz po wykonaniu skryptu php, wiec raczej nic z tym nie zrobisz.
moze latwiej by bylo stworzyc sobie swoj folder tymczasowy, i najpierw z tmp, przenosic je do niego, a potem z niego do docelowej lokalizacji.
i wtedy bez wiekszego kombinowania mozesz kasowac np wszysktie pliki w swoim folderze tymczasowym, starsze niz np 24h.
Go to the top of the page
+Quote Post
Reptile ReX
post
Post #7





Grupa: Zarejestrowani
Postów: 119
Pomógł: 0
Dołączył: 19.01.2008

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


Nom, myślę że tak będzie najlepiej, z własnym folderem tymczasowym.

Bo gdyby dodawać zdjęcia tam gdzie są wszystkie to skrypt po dłuższym czasie miałby spore problemy z segregacją tego.
(Wiadomo - dużo plików - dłuższy czas wykonywania/przymulony serwer)

Ale gdy powstanie folder tymczasowy to przez 24h nie nazbiera się taka wielka liczba plików i wszystko będzie płynnie funkcjonowało.

Dzięki wielkie.
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 Aktualny czas: 22.08.2025 - 07:02