Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Upload ze zmianą nazwy
Forum PHP.pl > Forum > PHP
moto0095
Witam mam oto taki skrypt uploadu:
  1. <?php
  2.  
  3. if(isset($_GET['dodaj'])){
  4.  
  5. $f = $_FILES['plik_upload'];
  6.  
  7.  
  8.  
  9. if(empty($f)){
  10.  
  11. die ('<b>Wypełnij poprawnie formularz</b><br><a target="_top" href="Fani_Galeria_Dodaj_Info.php">Wróć</a>');
  12.  
  13. }
  14.  
  15. echo '<div id="napis">';
  16.  
  17. if($f['type'] == 'image/jpeg')
  18.  
  19. {
  20.  
  21. echo '<center>Ładowanie<br><img src="load.gif" alt"load" /></center>';
  22.  
  23.  
  24.  
  25. if (move_uploaded_file($f['tmp_name'], 'upload/'.$f['name'])){
  26.  
  27. $name = $_FILES['plik_upload']['name'];
  28.  
  29. chmod('./upload/'.$f['name'], 0666);
  30.  
  31. echo "<script type=\"text/javascript\"> onload = function () {document.getElementById('napis').innerHTML='Plik został załadowany poprawnie...<br><a target=\"_top\" href=\"Fani_Galeria_Dodaj_Info.php\">Wróć</a>'}</script>";
  32.  
  33. }
  34.  
  35. else {
  36.  
  37. echo "<script type=\"text/javascript\"> onload = function () {document.getElementById('napis').innerHTML='Plik nie został załadowany.<br><a target=\"_top\" href=\"Fani_Galeria_Dodaj_Info.php\">Wróć</a>'}</script>";
  38.  
  39. }
  40.  
  41. }
  42.  
  43. else
  44.  
  45. {
  46.  
  47. die ('<b>Niedozwolony plik</b><br><a target="_top" href="Fani_Galeria_Dodaj_Info.php">Wróć</a>');
  48.  
  49. }
  50.  
  51. }
  52.  
  53. else{
  54.  
  55.  
  56. <form enctype="multipart/form-data" action="?dodaj" method="POST">
  57.  
  58. Plik
  59.  
  60. <input type="file" size="32" name="plik_upload" value="">
  61.  
  62. <input type="submit" value="Dodaj" />
  63.  
  64. </form>
  65.  
  66. ';
  67.  
  68. }
  69.  
  70. ?>


I chciałbym do niego podpiąć zmianę nazwy.
Chodzi mi oto aby było pole <input> "Podaj nazwę" i po wpisaniu do niego np: "fotka" to na serwerze zapisze się jako fotka.jpg
Zyx
Fajnie. I czego w związku z tym oczekujesz? Od razu uprzedzę, że gotowca na tym forum raczej nie dostaniesz, tak prosto to nie ma. Dodaj pole INPUT do formularza, po odebraniu sprawdź czy ktoś przypadkiem nie chce nam zrobić bubu, wpisując ciach, a potem popraw wywołanie move_uploaded_file() by korzystało z wpisanej nazwy.
Fifi209
Cytat(moto0095 @ 25.03.2010, 17:53:47 ) *
I chciałbym do niego podpiąć zmianę nazwy.
Chodzi mi oto aby było pole <input> "Podaj nazwę" i po wpisaniu do niego np: "fotka" to na serwerze zapisze się jako fotka.jpg


Bezsensu, ja bym bardziej myślał o hashowaniu nazw z jakąś dodatkową zmienną np. microtime (nie możesz mieć dwóch plików o tej samej nazwie)
moto0095
ale to będzie tylko dla mnie [admina]. I raczej nie przeszkadza mi że mogą być 2 takie same nazwy. raczej nie nadam 2 plikom takiej samej nazwy
Fifi209
Cytat(moto0095 @ 25.03.2010, 18:03:12 ) *
ale to będzie tylko dla mnie [admina]. I raczej nie przeszkadza mi że mogą być 2 takie same nazwy. raczej nie nadam 2 plikom takiej samej nazwy

Tłumacze Ci, że w katalogu nie może się tak zdarzyć że dwa pliki będą identycznie się nazywać.
moto0095
a ja ci tłumaczę że to tylko w celach administracyjnych i ja nie mam zamiaru nazywać 2 zdjęć tak samo

oki to może inne pytanie zadam.
Znak ktoś taki skrypt co by automatycznie zmieniał nazwy plików na :
1.jpg
2.jpg
3.jpg
itd. questionmark.gif
eai
Zerknij na ten projekt: http://code.google.com/p/nweb-image/ (pobierz

W "examples/upload-04.php", masz przykład z autonumerowaniem zdjęć.

A tutaj mała modyfikacja tego przykładu:
  1. try {
  2.  
  3. $upload = new Image_Upload();
  4.  
  5. // Autonumerowanie, zlicza ilość plików w katalogu upload i rozpoczyna od kolejnego
  6. $upload->setAutonumberStart(count(array_slice(scandir('upload'),2))+1);
  7.  
  8.  
  9. // Zmieniamy format nazywania (#### - to numer np 0001, 0002, 0003 itd...)
  10. $upload->setNameFormat ('uploaded-####');
  11.  
  12. // Jeżeli zostały przesłane dane formularza
  13. if($upload->upload('obraz')) {
  14.  
  15. // Zapisujemy do katalogu
  16. $upload->saveAll ('upload/', 100);
  17.  
  18. $message = 'Zdjęcia (' . count($upload->getImages()) . ') pomyślnie wgrane';
  19.  
  20.  
  21. $errors = $upload->getMessages();
  22. }
  23. }
  24. catch (Image_Upload_Exception $e)
  25. {
  26. die($e->getMessage());
  27. }


Jest to projekt mojego autorstwa, więc gdybyś miał problemy pisz PW to pomogę.
Pracuje obecnie nad manualem, ale jeszcze nie jest gotowy. Narazie jest tylko opis do generowania tokenów captcha: http://code.google.com/p/nweb-image/wiki/Captcha
Dokumentacja techniczna: http://image.nweb.pl/docs/
Przykłady użycia: http://image.nweb.pl/examples/
achill
sorki ze sie podpinam ale temat wlasciwie ten sam tylko tyle ze cos mi nie gra

mam dwa pytania:
1)
jesli dobrze rozumiem
enctype="multipart/form-data"
pozwala na ladowanie nie tylko plikow ale rowniez wartosci tekstowych/liczbowych itp krotko mowiac moge miec input type="file" jak i type="text" czy tez "checkbox" w obrebie tego samego formularza?
2)
czy ktos moze mi tak po chlopsku wytlumaczyc czesci skladowe przesylane przez $_FILES (u mnie wyswietla 4 - po wpisaniu print_r($_FILES); )

z gory dziekuje

i jeszcze jedno:

chce aby przy opcji edytowania wpisu w bazie danych podawal mi aktualnie wybrany obraz
mam cos takiego ale nie dziala - pewnie 2 pierwsze pytania pomoga rozwiazac ten problem:

  1. <input name="logo_filename" type="file" id="logo_filename" value="<?php
  2. if (isset($_REQUEST['pid'])
  3. and $_REQUEST['action'] != nowy) {
  4. $sql = "SELECT logo FROM portproj WHERE pid='" . $_REQUEST['pid'] . "' ";
  5. $result = mysql_query($sql);
  6. $row = mysql_fetch_array($result);
  7.  
  8. echo $row['logo'];
  9. }
  10. ?>" />

ps. wartosc logo_filename z formularza powinna byc zapisywana w bazie w kolumnie logo - stad w input name="logo_filename" a $row['logo']
futura
Kod
$nazwa_pliku_tmp = $_FILES['nazwa_pola_input_typu_file']['name'];
$rozszerzenie = rozszerzenie($nazwa_pliku_tmp); <- funkcja

function rozszerzenie($plik)
  {
    $path = pathinfo($plik);
        $roz = strtolower($path['extension']);
        return $roz;
    }


Jeżeli dodajesz nazwy zdjęć do bazy danych to:

Kod
$file_id = mysql_insert_id();<- pobranie id zdjęcia dodanego do bazy danych
$nazwa_pliku = $file_id.".".$rozszerzenie;


To jest tak w skrócie ogólna zasada tworzenia nazw plików 1.jpg itd.
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.