Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: upload zdjęć z możliwościa wyboru katalogu
Forum PHP.pl > Forum > PHP
Rico_ds
Witam,
piszę właśnie skrypt do wgrywania zdjęć na serwer. Do tej pory mam
  1. <form name="kopiarka" method="POST"
  2. enctype="multipart/form-data" action="upload.php">
  3. <input type="hidden" name="ok" value="1">
  4. <input type="hidden" name="MAX_FILE_SIZE" value="10000"><p>Wybierz plik do wgrania:<br>
  5. <input type="file" name="file" size="40"><br>
  6. <br>
  7. <input type="submit" value="Kopiuj"><input type="reset" value="Reset"></p>
  8. </form>
  9. </html>

  1. <?
  2. if ($ok=="1"){ /* działanie tylko jeśli użyto formularza */
  3. copy("$file", "katalog/$file_name"); /* kopiowanie */
  4. unlink("$file");
  5. echo"Plik został wgrany na serwer<br>
  6. Informacje o wgranym pliku:<br>
  7. Nazwa pliku: $file_name<br>
  8. Wielkość pliku: $file_size"; /* Potwierdzenie i informacja o skopiowanym pliku */
  9. }
  10. else {
  11. echo"Wystapił bład przy kopiowaniu pliku"; /* Informacja o błędzie */
  12. }
  13. ?>

Ale potrzebuje rozbudować ten skrypt tak by user mógł wybrać do którego katalogu wgrywany będzie plik. I nie bardzo wiem jak to zrobić. Możecie zaproponować jakieś rozwiązanie?
phoenix7
To zależy czy chcesz aby to było dynamiczne rozwiązanie, czyli użytkownik zakłada konkretny katalog czy też statyczne - ty zakładasz i definiujesz na stałe co użytkownik może sobie wybrać.

Rozwiń temat szerzej bo ciężko dobrac technologie po tym co napisałeś smile.gif

Pozdrawiam
PheoniX
Rico_ds
Heh, myślę, że zdecydowanie statycznie. Zakładam, że użytkownik wybiera katalog główny(w formie rozwijanej listy? albo czegoś) z np: kuchnie, zabudowy itd.
i jednym polu dodaje miniaturkę, która jest zapisywana w podfolderze mini, a w drugim zapisuje duże zdjęcie w podfolderze max. Ten kod co podałem nie zakłada jeszcze wgrywania osobno miniaturki i dużego obrazka ale będzie;)
phoenix7
Więc tak co do tej listy to wykorzystaj sobie <select>:
  1. <select name="katalog">
  2. <option value="kat1">katalog 1</option>
  3. <option value="kat2">katalog 2</option>
  4. ...
  5. <option value="katn">katalog n</option>


Wykorzystanie w PHP:
  1. <?php
  2. $katalog = $_POST['katalog'];
  3. echo $katalog; // dostaniesz w zależności od wybranej opcji kat1 lub kat2 itd.
  4. ?>


Później jak będziesz miał już zmienną katalog to wrzucasz ją

  1. <?php
  2. copy("$file", "$katalog/$file_name"); // pytanie czy nie lepiej move_uploaded_file bo i tak usuwasz później plik
  3. ?>


A co do tych miniaturek to zły pomysł, z doświadczenia wiem, że ludzie albo nie wiedzą jak
zmniejszyć zdjęcie, albo robią to źle więc poczytaj sobie na temat biblioteki GD z PHP
funkcje image i rób miniaturki dynamicznie za człowieka (można do tego dorzucić też zdjęcia bo
ludzie wrzucać ci będą np. takie o rozdzielczościach > 2000 pikseli smile.gif

Pozdrawiam
PhoeniX
Rico_ds
Dziękuje za pomoc. Pomyśle nad tym, ale osoba, która później będzie je wgrywać zna się na photoshopie, bo używa do obróbki zdjęć właśnie. A zdjęcia będą pokazywane w galerii flash, wiec chyba łatwiej podzielić to na miniaturki. Ale rozwiązanie wyświetlania to jeszcze kwestia do przemyślenia.
Neis
Witam, nie zakładam nowego tematu ponieważ chodzi tylko o małą (chyba małą) zmianę tego skryptu, mianowicie:

Jak powinien wyglądać skrypt gdyby zamiast <select> użyć checkboxów? Chciałbym żeby była możliwość wybrania kilku katalogów naraz i wrzucić plik do wybranych (czyli jeden plik w kilka katalogów za jednym razem). PHP nie jest moją mocną stroną dlatego prosze o pomoc

Pozdrawiam
Neis
byqu
Jeżeli znasz możliwe wartości checkbox'ów, to problemu nie będzie. Wykonujesz kilka IFów, dla których warunkiem jest
  1. <?php
  2. isset($_POST['nazwa_pola'])
  3. ?>
W środku IFa umieszczasz kod:
  1. <?php
  2. copy($file, $_POST['nazwa_pola'] . '/' . $file_name);
  3. ?>

Pamiętaj jednak, że ktoś może przesłać Ci "../", co zaskutkuje zapisaniem pliku w folderze wyżej ( np. głównym skryptu ). Musisz każdą zmienną sprawdzić, czy nie posiada znaku "/" ani ".".

P.S. $_POST['nazwa_pola'] stworzy się tylko, gdy pole jest zaznaczne, w przeciwnym wypadku będzie ona niezdeklarowana.
Neis
Wielkie dzieki ;]
Fakt, mialem maly problem no ale to bylo do przewidzenia przy mojej znajomsoci php blink.gif
No ale dałem rade

Pozdrawiam
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.