Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: PHP - Upload Zdjęć
Forum PHP.pl > Forum > PHP
Reptile ReX
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 ?
tsdek
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>
Reptile ReX
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.
ActivePlayer
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.
Reptile ReX
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.
ActivePlayer
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.
Reptile ReX
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.
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.