Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][HTML]Zdjęcie
Forum PHP.pl > Forum > Przedszkole
ArturEales
Witam. Mam następujący problem jak dodać zdjęcie na serwer za pomocą tego formularza:
Kod
<form action="..." enctype="multipart/form-data">
     <input [b]type="file"[/b] name="nazwa" />
</form>
wstydnis.gif proszę o odpowiedź.
Zac
Proponuje zacząć od określenia maksymalnego rozmiaru zdjęcia oraz określenia typów plików jakie chcesz wrzucać (w twoim przypadku .jpg, .gif, .png). Do tego musiz sie posługiwać "$_FILES". Typy najlepiej wrzucić do tablicy. Ja jeszcze zawsze pozbywam się polskich znaków i zamieniam spacje na "_" ale to już jak kto chce. Następnie sprawdź czy na serwerze istnieje folder do którego chcesz wrzucać zdjęcia - jeżeli nie należy go stworzyć, potem sprawdź czy typ pliku i rozmiar się zgadzją. Jeżeli wszystko jest ok użyj funkcji move_uploaded_file() zeby zapisac plik w folderze, którym chcesz. Jeżeli jakis warunek nie będzie spełniony (max. rozmiar, typ pliku) użyj finkcji unlink() żeby nie zostawiać pliku w folderze tmp. Wydaje mi sie że tyle wystarczy.
Pozdrawiam
gox
Zachowac bezpieczenstwo takiego uploadu to cos co Ci sie nie uda smile.gif

Zobacz jak fajnie to wyglada we frameworku CodeIgnier, oto moj skrypt uploadu fotek:
Szczerze polecam bo mniej czasu zajmie Ci przeczytanie user-guide co jest rownowazne z posiadnieciem wiedzy jak pisac w CI, nic pisanie od golasa..

Kontroller:
  1. <?php
  2.  
  3. function up() {
  4.    $this->load->view('upload_form', array('error' => ' ' ));
  5.    return;
  6. }
  7.  
  8. function up_do() {
  9.  
  10.    $config['upload_path'] = './uploads/';
  11.    $config['allowed_types'] = 'gif|png|jpg|jpeg|JPEG|JPG';
  12.    $config['max_size']    = '1500';
  13.    //$config['max_width']  = '1024';
  14.    //$config['max_height']  = '768';
  15.    $config['encrypt_name'] = true;
  16.    $this->load->library('upload', $config);
  17.  
  18.    if ( ! $this->upload->do_upload()) {
  19.        $error = array('error' => $this->upload->display_errors());
  20.        $this->load->view('upload_form', $error);
  21.        return;
  22.    }
  23.  
  24.    $data = $this->upload->data();
  25.  
  26.    if ( empty($data['image_width']) or
  27.         empty($data['image_height']) or
  28.         empty($data['image_type']))
  29.    {
  30.        $error = array('error' => '<p>Plik nie jest porpawnym obrazkiem.</p>');
  31.        $this->load->view('upload_form', $error);
  32.        return;
  33.    }
  34.    
  35.    $data = array(    'upload_data' => $data,
  36.                    'fname' => $this->_gen_name($data['file_path'], $data['full_path'], $data['file_ext']),
  37.    );
  38.    $this->load->view('upload_success', $data);
  39.    return;
  40. }
  41.  
  42.  
  43.  
  44. # @param    int    random string strlen
  45. function _gen_rand_name($len=6) {
  46.    $chars = 'QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm1234567890';
  47.    $chars_count = strlen($chars) - 1;
  48.    $rand_name = '';
  49.    srand();
  50.    while( strlen($rand_name) < (int)$len)
  51.        $rand_name .= $chars{ mt_rand(0, $chars_count) };
  52.    return $rand_name;
  53. }
  54.  
  55. # @param    string    "file_path" like -> D:/htdocs/fotki/uploads/
  56. # @param    string    "full_path" like -> D:/htdocs/fotki/uploads/fc0de9b4e7899adb909fd043c5161c68.gif
  57. function _gen_name($fpath='', $fname='', $fext='') {
  58.    if ( ! is_dir($fpath)) die('blad odczytu bazy');
  59.    if ( ! is_file($fname))    die('blad odczytu pliku');
  60.    if ( ! preg_match('#^.[w]{3,4}$#', $fext)) die('nieprawidlowe rozszerzenie?');
  61.    $fext = strtolower($fext);
  62.  
  63.    do {
  64.        $rname = $this->_gen_rand_name();
  65.    } while ( is_file( $fpath . $rname ));
  66.  
  67.    rename( $fname, $fpath . $rname . $fext );
  68.    return $rname . $fext;
  69. }
  70.  
  71. ?>


widok: upload_form
  1. <?php echo $error;?>
  2. <?php echo form_open_multipart('up_do');?>
  3. <input type="file" class="lol" name="userfile" size="30" />
  4. <input type="submit" value="wrzuc zdjecie" />
  5. </form>



Staram sie tylko poromowac sluszna koncepcje uzywania frameworkow.

pozdro600
decha-design
Cytat(gox @ 3.10.2008, 20:11:11 ) *
Staram sie tylko poromowac sluszna koncepcje uzywania frameworkow.

pozdro600


eeee, framework raczej nie jest potrzebny do małej strony ...
gox
"eeee, framework raczej nie jest potrzebny do małej strony ..."


od razu widac ze nigdy zadnego nie uzywales....
framework nigdy nie jest potrzebny, ale zawsze jest szalenie pomocny i skracajacy czas pisania, write less, do more...
Ociu
...
http://wortal.php.pl/wortal/artykuly/php/p...y/upload_plikow
Zero własnej inicjatywy, miliony razy na forum.
Zamykam.
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.