Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] $_FILES
Forum PHP.pl > Forum > Przedszkole
Sasuke Uchiha
Witam, postanowiłem sobie napisać dziś mały skrypcik dodawania obrazków na serwer i o to znalazłem się w magiczny sposób tutaj ponoewnie (jak ja was lubiębiggrin.gif). Problem jest następujący chciałbym aby użytkownik mógł jedynie dodać pliki o konkretnych roższerzeniach typu jpg czy png. No i niby jest ok ale gdy chcę dodać do bazy danych to niestety nie dodaje mi roższerzenia a jedynie wartość zmiennej random.

  1. if($_POST['actions'] == 'upload'){
  2.  
  3. $type_img = array ('application/png');
  4.  
  5. $rand = rand(1,999999);
  6. if(!in_array($_FILES['userfile']['type'], $type_img)){
  7. move_uploaded_file($_FILES['pliczek']['tmp_name'], "img/avatars/$rand");
  8.  
  9.  
  10. $sql = mysql_query("UPDATE users SET avatar='$rand.".$_FILES['type']."' WHERE id='$id_user'") or die ('mysql_error');
  11. echo "ok";
  12. }else{ echo "bad type"; }
  13.  
  14. }
jaslanin
w

  1. $sql = mysql_query("UPDATE users SET avatar='$rand.".$_FILES['type']."' WHERE id='$id_user'") or die ('mysql_error');


odwołujesz się do $_FILES['type']

a powinieneś do

$_FILES['userfile']['type']

następnym razem error_reporting ustaw na E_ALL to będziesz widział takie błędy dzięki informacją notice
Sasuke Uchiha
dalej nie dodaje żadnej wartości po kropcje smile.gif
jaslanin
dlaczego najpierw sprawdzasz czy format pliku userfile

$_FILES['userfile']['type']

a potem operujesz na pliku "pliczek":

$_FILES['pliczek']['tmp_name']

dodatkowo sprawdzasz:

  1. if(!in_array($_FILES['userfile']['type'], $type_img)){


raczej powinno być:

  1. if(in_array($_FILES['userfile']['type'], $type_img)){


bo tak jak Ty to robisz to pytasz czy typ pliku userfile nie istnieje w tablicy typów obrazków

pokaż formularz jaki wysyłasz do tego skryptu
Dominator
Spróbuj tak:

  1. $sql = mysql_query("UPDATE users SET avatar='".$rand.".".$_FILES[type]."' WHERE id='$id_user'") or die (mysql_error());
Sasuke Uchiha
Cytat(Dominator @ 22.06.2012, 20:36:27 ) *
Spróbuj tak:

  1. $sql = mysql_query("UPDATE users SET avatar='".$rand.".".$_FILES[type]."' WHERE id='$id_user'") or die (mysql_error());

Twój sposób nie działa niestety a poprzednika naprawiło mi inny problem ale tutaj mam taki problem że mi po rand dopisuje nazwę pliku i roższerzenie a ja nie chcę nazwy pliku! wink.gif

Cytat(jaslanin @ 22.06.2012, 20:33:20 ) *
dlaczego najpierw sprawdzasz czy format pliku userfile

$_FILES['userfile']['type']

a potem operujesz na pliku "pliczek":

$_FILES['pliczek']['tmp_name']

dodatkowo sprawdzasz:

  1. if(!in_array($_FILES['userfile']['type'], $type_img)){


raczej powinno być:

  1. if(in_array($_FILES['userfile']['type'], $type_img)){


bo tak jak Ty to robisz to pytasz czy typ pliku userfile nie istnieje w tablicy typów obrazków

pokaż formularz jaki wysyłasz do tego skryptu

  1. <form method="post" action="index_test.php?site=edit_profil" enctype="multipart/form-data">
  2. <input type="hidden" name="MAX_FILE_SIZE" value="30000">
  3.  
  4. Wybierz plik który chcesz umie?cić na serwerze:<br>
  5.  
  6. <input type="file" name="pliczek" size="40"><br>
  7. <input type="submit" name="actions" value="upload">
  8. </form>
jaslanin
ostatni krok jeżeli chcesz dodać rozszerzenie po $rand. to musisz sobie zrobić tablicę mapującą content type pliku (to co jest w $_FILES['pliczek']['type'] na rozszerzenie)

tu masz długą listę wybierz co Ci trzeba + zamień miejscami klucze i wartości
http://snipplr.com/view/1937/

powiedzmy że to jest w tablicy $mime2ext

i robisz tak pseudokod:

if array_key_exists($_FILES['pliczek']['type'], $mime2ext)
jeżeli tak to wstaw do bazy wartość z $mime2ext[$_FILES['pliczek']['type']]
else
jeżeli nie to daj błąd

pisane z palca ale powinno działać
Sasuke Uchiha
ok, a jak sprawić aby wgrywało tylko wybrane typy obrazków np png lub jpg questionmark.gif bo ten sposób nie działa ;o
jaslanin
jak w tablicy $mime2ext będziesz miał tylko wybrane typy obrazków to tak zadziała

+++ ewentualnie prześlij ponownie kod jaki masz teraz zrobiony wraz z formularzem.
Sasuke Uchiha
  1. if($_POST['actions'] == 'upload'){
  2.  
  3. $file_exe = "image/png";
  4. $rand = rand(1,999999);
  5. $file_type = $_FILES['pliczek']['type'];
  6.  
  7. $avatar = mysql_query("SELECT avatar FROM users WHERE avatar='$rand".$_FILES['pliczek']['name']."'");
  8. if(mysql_num_rows($avatar) == 0){
  9. if($_FILES['pliczek']['size'] < 1024001){
  10. if ($file_exe == $file_type){
  11. echo $_FILES['pliczek']['size'];
  12. if (move_uploaded_file($_FILES['pliczek']['tmp_name'], "img/avatars/$rand.png")) {
  13.  
  14.  
  15. $sql = mysql_query("UPDATE users SET avatar='$rand".$_FILES['pliczek']['name']."' WHERE id='$id_user'") or die ('mysql_error()');
  16. echo "Plik został załadowany poprawnie..."; echo $_FILES['pliczek']['type'];
  17. } else{ echo "Nie dodalo i chuj"; }
  18. } else{ echo "Plik nie jest plikiem PNG"; echo $_FILES['pliczek']['type']; }
  19. } else{ echo "Nie ten rozmiar"; }
  20. } else{ echo "nie jest dobrze z avataraem"; }
  21. }
  22.  
  23. <form method="post" action="index_test.php?site=edit_profil" enctype="multipart/form-data">
  24. <input type="hidden" name="MAX_FILE_SIZE" value="30000">
  25.  
  26. Wybierz plik który chcesz umieścić na serwerze:<br>
  27.  
  28. <input type="file" name="pliczek" size="40"><br>
  29. <input type="submit" name="actions" value="upload">
  30. </form>


Wszystko mi już działa teraz kombinuje z maksymalną szerokością i wysokością obrazka width and height
Kubaru
  1. list($width, $height) = getimagesize($_FILES['pliczek']['tmp_name']);
  2. if ($width > 500 || $height > 70) {

coś takiego mniej więcej
Sasuke Uchiha
chodź zastanawiam się czy nie zrobić skalowania obrazków do konkretnego wymiaru automatycznie bo jakby każdy miał 63 px sobie robić obrazki to ja w to wątpię biggrin.gif
Kubaru
To już zależy od Ciebie ;p
Polecam przejrzeć tematy na forum:
http://forum.php.pl/index.php?showtopic=14...wanie+obraz%F3w
http://forum.php.pl/index.php?showtopic=10...wanie+obraz%F3w
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.