Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Jak masowo wrzucac obrazki na serwer
kafar610
post
Post #1





Grupa: Zarejestrowani
Postów: 51
Pomógł: 0
Dołączył: 13.01.2013
Skąd: Pruszków

Ostrzeżenie: (0%)
-----


Witam
Stworzyłem kod dzięki któremu mogę wrzucać obrazki na serwer, jednak chciałbym abym mógł wrzuć pare obrazków a nie tylko 1 bardzo proszę o pomoc co mam dodać.
  1. <?php
  2. //definicja stalych
  3. define('HOST', '...');
  4. define('USER', 'kafar_2');
  5. define('PASSWORD', '...');
  6. define('NAZWA_BAZY', 'kafar_2');
  7. define('PORT', '3307');
  8.  
  9. define('GW_LOKALIZACJA', 'images/');
  10. define('GW_MAXFILESIZE', 5242880); // 5000 kilobajtow. 5mb
  11.  
  12. $image = $_FILE ['image'];
  13.  
  14. $image = $_FILES['image']['name'];
  15. $image_type = $_FILES['image']['type'];
  16. $image_size = $_FILES['image']['size'];
  17.  
  18. //walidacja start
  19. if ((empty($image))) {
  20.  
  21. echo "Nie wstawiłes zdjecia";
  22.  
  23. }
  24.  
  25. //walidacja end
  26. //wykoananie skryptu
  27. if ((!empty($image))) {
  28.  
  29. if (($image_type == 'image/gif') || ($image_type == 'image/jpeg') || ($image_type == 'image/pjpeg') || ($image_type == 'image/png')) {
  30.  
  31. if (($image_size > 0) && ($image_size <= GW_MAXFILESIZE)) {
  32.  
  33. // Przenoszenie plików do docelowego katalogu.
  34. $target = GW_LOKALIZACJA . $image;
  35.  
  36. if (move_uploaded_file($_FILES['image']['tmp_name'], $target)) {
  37.  
  38. $connect = mysqli_connect(HOST, USER, PASSWORD, NAZWA_BAZY, PORT)
  39. or die('Brak połączenia z serwerem MySQL');
  40.  
  41. echo 'Połączenie nawiązane<br />';
  42.  
  43.  
  44. // dodajemy rekord do bazy
  45.  
  46. $ins = "INSERT INTO obrazki VALUES (0,NOW(), '$image' )";
  47.  
  48.  
  49. mysqli_query($connect, $ins);
  50. $query = mysqli_query($connect, $ins);
  51.  
  52. if ($query)
  53. {
  54. echo 'Dane zostały wpisane do bazy <br />';
  55. }
  56. else
  57. echo 'Błąd przy dodawaniu rekordów do bazy <br />';
  58.  
  59. echo '<img src="' . GW_LOKALIZACJA . $image . '" width="500px" heith="500px" alt="image" /></p>';
  60.  
  61. mysqli_close($connect);
  62. }
  63. }
  64. else
  65. echo "Obrazek nie moze być wiekszy niż 5 mb";
  66. }
  67. else
  68. echo "Przesłany plik nie jest obrazekiem!!! <br /> Dostępne rozszerzenia: .gif, .jpeg, .pjpeg, .png ";
  69. }
  70. //wykoananie skryptu
  71. ?>

Pozdrawiam Darek

Ten post edytował kafar610 12.02.2015, 15:52:56
Go to the top of the page
+Quote Post
2 Stron V   1 2 >  
Start new topic
Odpowiedzi (1 - 32)
rad11
post
Post #2





Grupa: Zarejestrowani
Postów: 1 270
Pomógł: 184
Dołączył: 7.10.2012
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


http://stackoverflow.com/questions/1175347...using-http-post
Go to the top of the page
+Quote Post
b4rt3kk
post
Post #3





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

Ostrzeżenie: (0%)
-----


Jak widzisz $_FILES to tablica, gdzie pierwszy wymiar to nazwa wrzuconego pliku. Może być ich więcej jak 1, wszystko zależy od formularza.
Go to the top of the page
+Quote Post
kafar610
post
Post #4





Grupa: Zarejestrowani
Postów: 51
Pomógł: 0
Dołączył: 13.01.2013
Skąd: Pruszków

Ostrzeżenie: (0%)
-----


formularz mam dobry, jednak po wybraniu 2 zdj wyskakuje błąd "
Przesłany plik nie jest obrazekiem!!!
Dostępne rozszerzenia: .gif, .jpeg, .pjpeg, .png"
nie widzi 2 plików..
Go to the top of the page
+Quote Post
b4rt3kk
post
Post #5





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

Ostrzeżenie: (0%)
-----


Formularz masz może i dobry, ale w takim razie skrypt masz zły. Daj na samej górze skryptu coś w stylu:

  1. echo '<pre>';
  2. var_dump($_FILES);
  3. echo '</pre>';


I zobacz jak faktycznie wygląda tablica, którą przesyłasz.

Ten post edytował b4rt3kk 12.02.2015, 16:32:27
Go to the top of the page
+Quote Post
kafar610
post
Post #6





Grupa: Zarejestrowani
Postów: 51
Pomógł: 0
Dołączył: 13.01.2013
Skąd: Pruszków

Ostrzeżenie: (0%)
-----


  1. array(1) {
  2. ["image"]=>
  3. array(5) {
  4. ["name"]=>
  5. array(1) {
  6. [0]=>
  7. string(0) ""
  8. }
  9. ["type"]=>
  10. array(1) {
  11. [0]=>
  12. string(0) ""
  13. }
  14. ["tmp_name"]=>
  15. array(1) {
  16. [0]=>
  17. string(0) ""
  18. }
  19. ["error"]=>
  20. array(1) {
  21. [0]=>
  22. int(4)
  23. }
  24. ["size"]=>
  25. array(1) {
  26. [0]=>
  27. int(0)
  28. }
  29. }
  30. }

i co dalej?

Ten post edytował kafar610 12.02.2015, 16:36:31
Go to the top of the page
+Quote Post
b4rt3kk
post
Post #7





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

Ostrzeżenie: (0%)
-----


Przecież nie przesłałeś żadnego pliku, wrzuć ich kilka tak jak chciałeś i dopiero patrz co jest w tablicy. Masz error 4 - no file was uploaded.
Go to the top of the page
+Quote Post
kafar610
post
Post #8





Grupa: Zarejestrowani
Postów: 51
Pomógł: 0
Dołączył: 13.01.2013
Skąd: Pruszków

Ostrzeżenie: (0%)
-----


array(1) {
["image"]=>
array(5) {
["name"]=>
array(3) {
[0]=>
string(6) "oc.jpg"
[1]=>
string(11) "tabelka.jpg"
[2]=>
string(8) "test.jpg"
}
["type"]=>
array(3) {
[0]=>
string(10) "image/jpeg"
[1]=>
string(10) "image/jpeg"
[2]=>
string(10) "image/jpeg"
}
["tmp_name"]=>
array(3) {
[0]=>
string(14) "/tmp/phpe6Q9rt"
[1]=>
string(14) "/tmp/phpNdFxJl"
[2]=>
string(14) "/tmp/php3SNt1d"
}
["error"]=>
array(3) {
[0]=>
int(0)
[1]=>
int(0)
[2]=>
int(0)
}
["size"]=>
array(3) {
[0]=>
int(451173)
[1]=>
int(339693)
[2]=>
int(431177)
}
}
}
Go to the top of the page
+Quote Post
b4rt3kk
post
Post #9





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

Ostrzeżenie: (0%)
-----


No i wszystko przecież masz podane jak na tacy. Zwróć uwagę chociażby na $_FILES['image']['name'], która jest tablicą nazw wrzuconych przez Ciebie plików.

Po prostu to co robisz obecnie musisz zrobić w pętli.
Go to the top of the page
+Quote Post
kafar610
post
Post #10





Grupa: Zarejestrowani
Postów: 51
Pomógł: 0
Dołączył: 13.01.2013
Skąd: Pruszków

Ostrzeżenie: (0%)
-----


no i zrobiłem pętle

  1. <?php
  2. //definicja stalych
  3.  
  4. define('HOST', '...');
  5. define('USER', 'kafar_2');
  6. define('PASSWORD', '...');
  7. define('NAZWA_BAZY', 'kafar_2');
  8. define('PORT', '3307');
  9.  
  10. define('GW_LOKALIZACJA', 'images/');
  11. define('GW_MAXFILESIZE', 5242880); // 5000 kilobajtow. 5mb
  12.  
  13. $image = $_FILES['image']['name'];
  14. $image_type = $_FILES['image']['type'];
  15. $image_size = $_FILES['image']['size'];
  16.  
  17. //walidacja start
  18. if ((empty($image))) {
  19.  
  20. echo "Nie wstawiłes zdjecia";
  21.  
  22. }
  23.  
  24. //walidacja end
  25. //wykoananie skryptu
  26. if ((!empty($image))) {
  27.  
  28. for($i=0;$i<count($_FILES['image']['tmp_name']);$i++) {
  29.  
  30. if (($image_type == 'image/gif') || ($image_type == 'image/jpeg') || ($image_type == 'image/pjpeg') || ($image_type == 'image/png')) {
  31.  
  32. if (($image_size > 0) && ($image_size <= GW_MAXFILESIZE)) {
  33.  
  34. // Przenoszenie plików do docelowego katalogu.
  35. $target = GW_LOKALIZACJA . $image;
  36.  
  37. if (move_uploaded_file($_FILES['image']['tmp_name'], $target)) {
  38.  
  39. $connect = mysqli_connect(HOST, USER, PASSWORD, NAZWA_BAZY, PORT)
  40. or die('Brak połączenia z serwerem MySQL');
  41.  
  42. echo 'Połączenie nawiązane<br />';
  43.  
  44.  
  45. // dodajemy rekord do bazy
  46.  
  47. $ins = "INSERT INTO obrazki VALUES (0,NOW(), '$image' )";
  48.  
  49.  
  50. mysqli_query($connect, $ins);
  51. $query = mysqli_query($connect, $ins);
  52.  
  53. if ($query)
  54. {
  55. echo 'Dane zostały wpisane do bazy <br />';
  56. }
  57. else
  58. echo 'Błąd przy dodawaniu rekordów do bazy <br />';
  59.  
  60. echo '<img src="' . GW_LOKALIZACJA . $image . '" width="500px" heith="500px" alt="image" /></p>';
  61.  
  62. mysqli_close($connect);
  63. }
  64. }
  65. else
  66. echo "Obrazek nie moze być wiekszy niż 5 mb";
  67. }
  68. else
  69. echo "Przesłany plik nie jest obrazekiem!!! <br /> Dostępne rozszerzenia: .gif, .jpeg, .pjpeg, .png ";
  70. }
  71. }
  72. //wykoananie skryptu
  73. ?>


juz widzi ze wrzucam 3 pliki lecz nadal wywala blad "Przesłany plik nie jest obrazekiem!!!
Dostępne rozszerzenia: .gif, .jpeg, .pjpeg, .png Przesłany plik nie jest obrazekiem!!!
Dostępne rozszerzenia: .gif, .jpeg, .pjpeg, .png Przesłany plik nie jest obrazekiem!!!
Dostępne rozszerzenia: .gif, .jpeg, .pjpeg, .png"

Pokaże ktoś jak powinno to wyglądać?

doszedłem do tego momentu że
1.nie wywala błędów
2.niby widzę 3 obrazki ale 1 i ten sam
3. do bazy dodaje mi się jedynka (numer tablicy) zamiast nazwy obrazka
  1. <?php
  2.  
  3. //definicja stalych
  4. ini_set('display_errors', 'on');
  5.  
  6. define('HOST', '...');
  7. define('USER', 'kafar_2');
  8. define('PASSWORD', '...');
  9. define('NAZWA_BAZY', 'kafar_2');
  10. define('PORT', '3307');
  11.  
  12. define('GW_LOKALIZACJA', 'images/');
  13. define('GW_MAXFILESIZE', 5242880); // 5000 kilobajtow. 5mb
  14. $i= 0;
  15. $image = print_r($_FILES['image']['name'][$i]);
  16. $image_type = print_r($_FILES['image']['type'][$i]);
  17. $image_size = print_r($_FILES['image']['size'][$i]);
  18.  
  19. //walidacja start
  20. if ((empty($image))) {
  21.  
  22. echo "Nie wstawiłes zdjecia";
  23.  
  24. }
  25.  
  26. //walidacja end
  27. //wykoananie skryptu
  28. if ((!empty($image))) {
  29.  
  30. for($i=0;$i<count($_FILES['image']['tmp_name']);$i++) {
  31.  
  32. if (($image_type == 'image/gif') || ($image_type == 'image/jpeg') || ($image_type == 'image/pjpeg') || ($image_type == 'image/png')) {
  33.  
  34. if (($image_size > 0) && ($image_size <= GW_MAXFILESIZE)) {
  35.  
  36. // Przenoszenie plików do docelowego katalogu.
  37. $target = GW_LOKALIZACJA . $image;
  38.  
  39. if (move_uploaded_file($_FILES['image']['tmp_name'][$i], $target)) {
  40.  
  41. $connect = mysqli_connect(HOST, USER, PASSWORD, NAZWA_BAZY, PORT)
  42. or die('Brak połączenia z serwerem MySQL');
  43.  
  44. echo 'Połączenie nawiązane<br />';
  45.  
  46.  
  47. // dodajemy rekord do bazy
  48.  
  49. $ins = "INSERT INTO obrazki VALUES (0,NOW(), '$image' )";
  50.  
  51.  
  52. mysqli_query($connect, $ins);
  53. $query = mysqli_query($connect, $ins);
  54.  
  55. if ($query)
  56. {
  57. echo 'Dane zostały wpisane do bazy <br />';
  58. }
  59. else
  60. echo 'Błąd przy dodawaniu rekordów do bazy <br />';
  61.  
  62. echo '<img src="' . GW_LOKALIZACJA . $image . '" width="500px" heith="500px" alt="image" /></p>';
  63.  
  64. mysqli_close($connect);
  65. }
  66. }
  67. else
  68. echo "Obrazek nie moze być wiekszy niż 5 mb";
  69. }
  70. else
  71. echo "Przesłany plik nie jest obrazekiem!!! <br /> Dostępne rozszerzenia: .gif, .jpeg, .pjpeg, .png ";
  72. }
  73. }
  74. //wykoananie skryptu
  75. ?>
Go to the top of the page
+Quote Post
b4rt3kk
post
Post #11





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

Ostrzeżenie: (0%)
-----


Nie taka pętla... Nie widzisz na prawdę jaką strukturę ma ta tablica $_FILES?

  1. $img = $_FILES['image'];
  2.  
  3. foreach ($img['tmp_name'] as $key => $tmp_name) {
  4. echo 'Nazwa: ' . $img['name'][$key] . '<br/>';
  5. echo 'Rozmiar: ' . $img['size'][$key] . '<br/>';
  6. echo '<img src="' . $tmp_name . '" />';
  7. }
Go to the top of the page
+Quote Post
kafar610
post
Post #12





Grupa: Zarejestrowani
Postów: 51
Pomógł: 0
Dołączył: 13.01.2013
Skąd: Pruszków

Ostrzeżenie: (0%)
-----


zrobiłem tak jak mówiłeś i nic...

  1.  
  2. <?php
  3. define('GW_LOKALIZACJA', 'images/');
  4. define('GW_MAXFILESIZE', 5242880); // 5000 kilobajtow. 5mb
  5. $image = print_r($_FILES['image']['name']);
  6. $image_type = print_r($_FILES['image']['type']);
  7. $image_size = print_r($_FILES['image']['size']);
  8. $img = $_FILES['image'];
  9.  
  10. //walidacja start
  11. if ((empty($image))) {
  12.  
  13. echo "Nie wstawiłes zdjecia";
  14.  
  15. }
  16.  
  17. //walidacja end
  18. //wykoananie skryptu
  19. if ((!empty($image))) {
  20.  
  21. foreach ($img['tmp_name'] as $key => $tmp_name) {
  22.  
  23. if (($image_type == 'image/gif') || ($image_type == 'image/jpeg') || ($image_type == 'image/pjpeg') || ($image_type == 'image/png')) {
  24.  
  25. if (($image_size > 0) && ($image_size <= GW_MAXFILESIZE)) {
  26.  
  27. // Przenoszenie plików do docelowego katalogu.
  28. $target = GW_LOKALIZACJA . $image;
  29.  
  30. if (move_uploaded_file($_FILES['image']['tmp_name'], $target)) {
  31.  
  32. $connect = mysqli_connect(HOST, USER, PASSWORD, NAZWA_BAZY, PORT)
  33. or die('Brak połączenia z serwerem MySQL');
  34.  
  35. echo 'Połączenie nawiązane<br />';
  36.  
  37.  
  38. // dodajemy rekord do bazy
  39.  
  40. $ins = "INSERT INTO obrazki VALUES (0,NOW(), '$image' )";
  41.  
  42.  
  43. mysqli_query($connect, $ins);
  44. $query = mysqli_query($connect, $ins);
  45.  
  46. if ($query)
  47. {
  48. echo 'Dane zostały wpisane do bazy <br />';
  49. }
  50. else
  51. echo 'Błąd przy dodawaniu rekordów do bazy <br />';
  52.  
  53. echo '<img src="' . GW_LOKALIZACJA . $image . '" width="500px" heith="500px" alt="image" /></p>';
  54.  
  55. mysqli_close($connect);
  56. }
  57. }
  58. else
  59. echo "Obrazek nie moze być wiekszy niż 5 mb";
  60. }
  61. else
  62. echo "Przesłany plik nie jest obrazekiem!!! <br /> Dostępne rozszerzenia: .gif, .jpeg, .pjpeg, .png ";
  63. }
  64. }
  65. //wykoananie skryptu
  66. ?>

wyskakuje błąd Warning: move_uploaded_file() expects parameter 1 to be string
Go to the top of the page
+Quote Post
com
post
Post #13





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

Ostrzeżenie: (0%)
-----


http://php.net/move_uploaded_file
Go to the top of the page
+Quote Post
kafar610
post
Post #14





Grupa: Zarejestrowani
Postów: 51
Pomógł: 0
Dołączył: 13.01.2013
Skąd: Pruszków

Ostrzeżenie: (0%)
-----


zrobiłem DOKŁADNIE jak w php.net i teraz obrazków nie wyświetla...
Go to the top of the page
+Quote Post
b4rt3kk
post
Post #15





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

Ostrzeżenie: (0%)
-----


Jak chcesz robić tak jak robisz, to chociaż przerzuć zmienne z których korzystasz do wnętrza pętli.

  1. <?php
  2. define('GW_LOKALIZACJA', 'images/');
  3. define('GW_MAXFILESIZE', 5242880); // 5000 kilobajtow. 5mb
  4. $img = $_FILES['image'];
  5.  
  6. //walidacja start
  7. if ((empty($image))) {
  8.  
  9. echo "Nie wstawiłes zdjecia";
  10.  
  11. }
  12.  
  13. //walidacja end
  14. //wykoananie skryptu
  15. if ((!empty($image))) {
  16.  
  17. foreach ($img['tmp_name'] as $key => $tmp_name) {
  18.  
  19. $image = $_FILES['image']['name'][$key];
  20. $image_type = $_FILES['image']['type'][$key];
  21. $image_size = $_FILES['image']['size'][$key];
  22.  
  23. if (($image_type == 'image/gif') || ($image_type == 'image/jpeg') || ($image_type == 'image/pjpeg') || ($image_type == 'image/png')) {
  24.  
  25. if (($image_size > 0) && ($image_size <= GW_MAXFILESIZE)) {
  26.  
  27. // Przenoszenie plików do docelowego katalogu.
  28. $target = GW_LOKALIZACJA . $image;
  29.  
  30. if (move_uploaded_file($_FILES['image']['tmp_name'][$key], $target)) {
  31.  
  32. $connect = mysqli_connect(HOST, USER, PASSWORD, NAZWA_BAZY, PORT)
  33. or die('Brak połączenia z serwerem MySQL');
  34.  
  35. echo 'Połączenie nawiązane<br />';
  36.  
  37.  
  38. // dodajemy rekord do bazy
  39.  
  40. $ins = "INSERT INTO obrazki VALUES (0,NOW(), '$image' )";
  41.  
  42.  
  43. mysqli_query($connect, $ins);
  44. $query = mysqli_query($connect, $ins);
  45.  
  46. if ($query)
  47. {
  48. echo 'Dane zostały wpisane do bazy <br />';
  49. }
  50. else
  51. echo 'Błąd przy dodawaniu rekordów do bazy <br />';
  52.  
  53. echo '<img src="' . GW_LOKALIZACJA . $image . '" width="500px" heith="500px" alt="image" /></p>';
  54.  
  55. mysqli_close($connect);
  56. }
  57. }
  58. else
  59. echo "Obrazek nie moze być wiekszy niż 5 mb";
  60. }
  61. else
  62. echo "Przesłany plik nie jest obrazekiem!!! <br /> Dostępne rozszerzenia: .gif, .jpeg, .pjpeg, .png ";
  63. }
  64. }
  65. //wykoananie skryptu
  66. ?>


Nic nie zrobiłeś tak jak Ci podałem w przykładzie. Zmieniłeś tylko pętlę z for na foreach, a reszta została.

Ten post edytował b4rt3kk 13.02.2015, 00:41:42
Go to the top of the page
+Quote Post
kafar610
post
Post #16





Grupa: Zarejestrowani
Postów: 51
Pomógł: 0
Dołączył: 13.01.2013
Skąd: Pruszków

Ostrzeżenie: (0%)
-----


Kod działa dzięki (IMG:style_emoticons/default/smile.gif) ale czemu do bazy obrazki dodają się podwójnie?
(IMG:http://www.iv.pl/images/14067587556061550675.png)
Go to the top of the page
+Quote Post
b4rt3kk
post
Post #17





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

Ostrzeżenie: (0%)
-----


Pewnie dlatego, że dwa razy wykonujesz zapytanie:

  1. mysqli_query($connect, $ins);
  2. $query = mysqli_query($connect, $ins);
Go to the top of the page
+Quote Post
kafar610
post
Post #18





Grupa: Zarejestrowani
Postów: 51
Pomógł: 0
Dołączył: 13.01.2013
Skąd: Pruszków

Ostrzeżenie: (0%)
-----


ahhh dzięki (IMG:style_emoticons/default/biggrin.gif)
Pomożesz mi jeszcze zmienić nazwę pliku przed przeniesieniem ich do folderu?

  1. <?php
  2. if (isset($_POST['submit'])) {
  3.  
  4. //definicja stalych
  5. ini_set('display_errors', 'on');
  6.  
  7. define('HOST', '...');
  8. define('USER', 'kafar_2');
  9. define('PASSWORD', '...');
  10. define('NAZWA_BAZY', 'kafar_2');
  11. define('PORT', '3307');
  12.  
  13. define('GW_LOKALIZACJA', 'images/');
  14. define('GW_MAXFILESIZE', 5242880); // 5000 kilobajtow. 5mb
  15. $img = $_FILES['image'];
  16.  
  17. //walidacja start
  18. if ((empty($image))) {
  19.  
  20. echo "Nie wstawiłes zdjecia";
  21.  
  22. }
  23.  
  24. //walidacja end
  25. //wykoananie skryptu
  26. if ((!empty($image))) {
  27.  
  28. foreach ($img['tmp_name'] as $key => $tmp_name) {
  29.  
  30. $image = $_FILES['image']['name'][$key];
  31. $image_type = $_FILES['image']['type'][$key];
  32. $image_size = $_FILES['image']['size'][$key];
  33. $id= 0;
  34.  
  35. if (($image_type == 'image/gif') || ($image_type == 'image/jpeg') || ($image_type == 'image/pjpeg') || ($image_type == 'image/png')) {
  36.  
  37. if (($image_size > 0) && ($image_size <= GW_MAXFILESIZE)) {
  38.  
  39. // Przenoszenie plików do docelowego katalogu.
  40. $target = GW_LOKALIZACJA . $image;
  41.  
  42.  
  43. if (move_uploaded_file($_FILES['image']['tmp_name'][$key], $target)) {
  44. rename($image, $image . $id);
  45.  
  46. $connect = mysqli_connect(HOST, USER, PASSWORD, NAZWA_BAZY, PORT)
  47. or die('Brak połączenia z serwerem MySQL');
  48.  
  49. echo 'Połączenie nawiązane<br />';
  50.  
  51.  
  52. // dodajemy rekord do bazy
  53.  
  54. $ins = "INSERT INTO obrazki VALUES ('$id',NOW(), '$image' )";
  55.  
  56.  
  57. $query = mysqli_query($connect, $ins);
  58.  
  59. if ($query)
  60. {
  61. echo 'Dane zostały wpisane do bazy <br />';
  62. }
  63. else
  64. echo 'Błąd przy dodawaniu rekordów do bazy <br />';
  65.  
  66. //echo '<img src="' . GW_LOKALIZACJA . $image . '" width="500px" heith="500px" alt="image" /></p>';
  67.  
  68. echo 'Nazwa: ' . $img['name'][$key] . '<br/>';
  69. echo 'Rozmiar: ' . $img['size'][$key] . '<br/>';
  70. echo '<img src="' . GW_LOKALIZACJA . $image . '" width="500px" heith="500px" alt="image" /></p>';
  71.  
  72. mysqli_close($connect);
  73. }
  74. }
  75. else
  76. echo "Obrazek nie moze być wiekszy niż 5 mb";
  77. }
  78. else
  79. echo "Przesłany plik nie jest obrazekiem!!! <br /> Dostępne rozszerzenia: .gif, .jpeg, .pjpeg, .png ";
  80. }
  81. }
  82. }
  83. //wykoananie skryptu
  84. ?>


Próbowałem już użyć funkcji rename jednak wywala błąd "rename(oc.jpg,oc.jpg0) [function.rename]: No such file or directory"
Go to the top of the page
+Quote Post
shpaque
post
Post #19





Grupa: Zarejestrowani
Postów: 651
Pomógł: 3
Dołączył: 31.01.2011
Skąd: Warszawa

Ostrzeżenie: (10%)
X----


Ja po prostu polecił bym Tobie takie coś (IMG:style_emoticons/default/wink.gif)

http://elfinder.org/
Go to the top of the page
+Quote Post
b4rt3kk
post
Post #20





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

Ostrzeżenie: (0%)
-----


  1. if (move_uploaded_file($_FILES['image']['tmp_name'][$key], $target)) {


$target to Twoja nazwa pliku. Zmień na dowolną (oczywiście poprzedzając odpowiednią ścieżką). Pamiętaj, żeby też zmienić nazwę, którą zapisujesz w bazie danych.

Jak chcesz użyć rename to w ten sposób:

  1. rename($target, $target . $id);


Ten post edytował b4rt3kk 13.02.2015, 13:02:51
Go to the top of the page
+Quote Post
kafar610
post
Post #21





Grupa: Zarejestrowani
Postów: 51
Pomógł: 0
Dołączył: 13.01.2013
Skąd: Pruszków

Ostrzeżenie: (0%)
-----


Działa!!! tylko haha, trochę nie o to mi chodziło (IMG:style_emoticons/default/haha.gif) on zapisuje tak np. test.jpg0 a ja bym chciał test0.jpg + nie wiem czy id to jest dobry pomysł, jak myślisz? po prostu nazwy plikow maja się nie powtarzać, i wgl czemu id się nie dodaje w sensie żeby było 1 2 3 4 itp a jest ciagle 0, jak to zrobić?

Coś wyczytałem o pathinfo ale za bardzo nie wiem jak mam tego użyć

Ten post edytował kafar610 13.02.2015, 13:37:16
Go to the top of the page
+Quote Post
b4rt3kk
post
Post #22





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

Ostrzeżenie: (0%)
-----


Cytat(kafar610 @ 13.02.2015, 13:33:53 ) *
Działa!!! tylko haha, trochę nie o to mi chodziło (IMG:style_emoticons/default/haha.gif) on zapisuje tak np. test.jpg0 a ja bym chciał test0.jpg + nie wiem czy id to jest dobry pomysł, jak myślisz? po prostu nazwy plikow maja się nie powtarzać, i wgl czemu id się nie dodaje w sensie żeby było 1 2 3 4 itp a jest ciagle 0, jak to zrobić?

Coś wyczytałem o pathinfo ale za bardzo nie wiem jak mam tego użyć


Najlepszym sposobem jest po prostu zapisać plik pod swoją roboczą nazwą, nawet bez rozszerzenia, a w bazie przechowywać jego prawdziwą nazwę. W momencie próby pobrania pliku (realizujesz to skryptem php) otwierasz dany plik, nadajesz mu nazwę z bazy i wypluwasz userowi treść. Czyli w bazie musiałbyś jeszcze przechowywać nadane przez siebie tmp_name, czy tam storage_name, jak wolisz. Przy okazji masz lepszą kontrolę nad tym co, kto otwiera, bez konieczności patrzenia w logi apatcha, bo po prostu zapisujesz to sobie w bazie, a dla usera nie ma żadnej różnicy.
Go to the top of the page
+Quote Post
kafar610
post
Post #23





Grupa: Zarejestrowani
Postów: 51
Pomógł: 0
Dołączył: 13.01.2013
Skąd: Pruszków

Ostrzeżenie: (0%)
-----


Czyli tak, przesyłam plik np test.jpg

1. Zapisuje go w folderze jako test
2. W bazie zapisuje go jako test.jpg
3. w momencie pobrania wybieram dany plik i zmieniam mu nazwę na jaka chce

To naprawdę nie będzie miało kłopotów z takimi samymi plikami?
Nie wiem czy dobrze to wszystko zrozumiałem...
Go to the top of the page
+Quote Post
b4rt3kk
post
Post #24





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

Ostrzeżenie: (0%)
-----


Cytat(kafar610 @ 13.02.2015, 14:00:22 ) *
Czyli tak, przesyłam plik np test.jpg

1. Zapisuje go w folderze jako test
2. W bazie zapisuje go jako test.jpg
3. w momencie pobrania wybieram dany plik i zmieniam mu nazwę na jaka chce

To naprawdę nie będzie miało kłopotów z takimi samymi plikami?
Nie wiem czy dobrze to wszystko zrozumiałem...


Nie, plik zapisujesz np. jako jakiś hash, dajmy na to q45hy6ytr - powiedzmy, że jest to md5 z nazwy pliku i czasu przesłania (oczywiście ten hash również musisz mieć w bazie, żeby wiedzieć, który plik otworzyć), więc do bazy ładujesz ten hash do jednej kolumny i nazwę pierwotną pliku, np. test.jpg do drugiej kolumny.

Kiedy ktoś chce pobrać plik, to dodajesz header, w którym wskazujesz, że jest to załącznik, otwierasz zawartość hasha, robisz echo pod header i userowi się pobiera.
Go to the top of the page
+Quote Post
kafar610
post
Post #25





Grupa: Zarejestrowani
Postów: 51
Pomógł: 0
Dołączył: 13.01.2013
Skąd: Pruszków

Ostrzeżenie: (0%)
-----


A jeśli plik ma się nie pobierać tylko to ma być link np. na forum to ma to jakieś znaczenie?
Go to the top of the page
+Quote Post
com
post
Post #26





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

Ostrzeżenie: (0%)
-----


nie jedynie inny nagłówek mime ustawiasz, w tym wypadku obrazkowy zależny oczywiście od rozszerzenia obrazka a te nagłówki znajdziesz np tu http://www.sitepoint.com/web-foundations/m...-complete-list/
Go to the top of the page
+Quote Post
kafar610
post
Post #27





Grupa: Zarejestrowani
Postów: 51
Pomógł: 0
Dołączył: 13.01.2013
Skąd: Pruszków

Ostrzeżenie: (0%)
-----


A w bazie to jakiego typu ma być ta kolumna na hash? varchar(64) starczy?
Go to the top of the page
+Quote Post
com
post
Post #28





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

Ostrzeżenie: (0%)
-----


jak md5 to 32 (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
kafar610
post
Post #29





Grupa: Zarejestrowani
Postów: 51
Pomógł: 0
Dołączył: 13.01.2013
Skąd: Pruszków

Ostrzeżenie: (0%)
-----


Na razie sklepałem coś takiego
  1. $target = GW_LOKALIZACJA . $image;
  2. $target1 = GW_LOKALIZACJA . $image;
  3. rename($target, md5($target)); // zmieniamy nazwe pliku na hash
  4.  
  5. if (move_uploaded_file($_FILES['image']['tmp_name'][$key], $target)) { //zapisujemy hash pliku
  6.  
  7. $connect = mysqli_connect(HOST, USER, PASSWORD, NAZWA_BAZY, PORT)
  8. or die('Brak połączenia z serwerem MySQL');
  9.  
  10. echo 'Połączenie nawiązane<br />';
  11.  
  12.  
  13. // dodajemy rekord do bazy
  14.  
  15. $ins = "INSERT INTO obrazki VALUES ('$id',NOW(),'$target1' ,'$target' )"; // dodajemy pierwotna nazwe w 1 kolumnie a w 2 hash
  16.  
  17.  
  18. $query = mysqli_query($connect, $ins);
  19.  
  20. if ($query)
  21. {
  22. echo 'Dane zostały wpisane do bazy <br />';
  23. }
  24. else
  25. echo 'Błąd przy dodawaniu rekordów do bazy <br />';
  26.  
  27. //echo '<img src="' . GW_LOKALIZACJA . $image . '" width="500px" heith="500px" alt="image" /></p>';
  28.  
  29. echo 'Nazwa: ' . $img['name'][$key] . '<br/>';
  30. echo 'Rozmiar: ' . $img['size'][$key] . '<br/>';
  31. echo '<img src="' . GW_LOKALIZACJA . $image . '" width="500px" heith="500px" alt="image" /></p>';
  32.  
  33. mysqli_close($connect);
  34. }
  35. }
  36. else
  37. echo "Obrazek nie moze być wiekszy niż 5 mb";
  38. }
  39. else
  40. echo "Przesłany plik nie jest obrazekiem!!! <br /> Dostępne rozszerzenia: .gif, .jpeg, .pjpeg, .png ";
  41. }
  42. }
  43. }
  44. //wykoananie skryptu
  45. ?>


i wyskakuje "Warning: rename(images/oc.jpg,d839ab8ac221360df66abc19a9fd8590) [function.rename]: No such file or directory in"
Go to the top of the page
+Quote Post
b4rt3kk
post
Post #30





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

Ostrzeżenie: (0%)
-----


  1. $target = GW_LOKALIZACJA . md5($image);


Nie możesz się pozbyć lokalizacji, hashujesz tylko nazwę pliku.
Go to the top of the page
+Quote Post
kafar610
post
Post #31





Grupa: Zarejestrowani
Postów: 51
Pomógł: 0
Dołączył: 13.01.2013
Skąd: Pruszków

Ostrzeżenie: (0%)
-----


haha no tak (IMG:style_emoticons/default/biggrin.gif)
Cytat(b4rt3kk @ 13.02.2015, 14:50:24 ) *
Kiedy ktoś chce pobrać plik, to dodajesz header, w którym wskazujesz, że jest to załącznik, otwierasz zawartość hasha, robisz echo pod header i userowi się pobiera.


Cytat
nie jedynie inny nagłówek mime ustawiasz, w tym wypadku obrazkowy zależny oczywiście od rozszerzenia obrazka a te nagłówki znajdziesz np tu http://www.sitepoint.com/web-foundations/m...-complete-list/


A z tym to zielonego pojęcia nie mam jak to zrobić...
Pokażecie jakiś przykład?
Chce aby był taki link do pliku http://kafar.nazwa.pl/images/nazwa_pliku

Ten post edytował kafar610 13.02.2015, 16:15:13
Go to the top of the page
+Quote Post
b4rt3kk
post
Post #32





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

Ostrzeżenie: (0%)
-----


Potrzebujesz coś w rodzaju routera, czy też dispatchera, no i też przydałoby się zapisywać mime pliku do bazy. Później w htaccesie przekierowujesz wszystkie requesty z images na swój plik, powiedzmy index.php, gdzie odczytujesz a adresu id pliku do otworzenia.
Go to the top of the page
+Quote Post
kafar610
post
Post #33





Grupa: Zarejestrowani
Postów: 51
Pomógł: 0
Dołączył: 13.01.2013
Skąd: Pruszków

Ostrzeżenie: (0%)
-----


Trochę trudne na początek... Nie ma łatwiejszego sposobu?

Dobra widze że nikt nie zna prostszego sposobu. To tak, zobacz czy wszystko dobrze zrozumiałem.
1. Tworze kolejna kolumne w bazie z mime zdjecia
2. Wyciągam mime pliku i zapisuje do bazy
3. w htaccesie przekierowuje wszystkie requesty z images na swój plik


I jak mam wyciągnąć mime bo na to kompletnie nie mam pomyslu

Dobra skminiłem coś takiego
  1. define('GW_LOKALIZACJA', 'images/');
  2. define('GW_MAXFILESIZE', 5242880); // 5000 kilobajtow. 5mb
  3. $img = $_FILES['image'];
  4.  
  5. //walidacja start
  6. if ((empty($image))) {
  7.  
  8. echo "Nie wstawiłes zdjecia";
  9.  
  10. }
  11.  
  12. //walidacja end
  13. //wykoananie skryptu
  14. if ((!empty($image))) {
  15.  
  16. foreach ($img['tmp_name'] as $key => $tmp_name) {
  17.  
  18. $image = $_FILES['image']['name'][$key];
  19. $image_type = $_FILES['image']['type'][$key];
  20. $image_size = $_FILES['image']['size'][$key];
  21. $id= 0;
  22.  
  23. if (($image_type == 'image/gif') || ($image_type == 'image/jpeg') || ($image_type == 'image/pjpeg') || ($image_type == 'image/png')) {
  24.  
  25. if (($image_size > 0) && ($image_size <= GW_MAXFILESIZE)) {
  26.  
  27. // Przenoszenie plików do docelowego katalogu.
  28. $target = GW_LOKALIZACJA . $image; //zwykly
  29. $target1 = GW_LOKALIZACJA . md5($image); //hash
  30.  
  31. if (move_uploaded_file($_FILES['image']['tmp_name'][$key], $target1)) {
  32.  
  33. $connect = mysqli_connect(HOST, USER, PASSWORD, NAZWA_BAZY, PORT)
  34. or die('Brak połączenia z serwerem MySQL');
  35.  
  36. echo 'Połączenie nawiązane<br />';
  37.  
  38. //pobranie rozszerzenia
  39. $odczyt = pathinfo($image);
  40. $ext = $odczyt['extension'];
  41. //pobranie rozszerzenia
  42.  
  43. // dodajemy rekord do bazy
  44.  
  45. $ins = "INSERT INTO obrazki VALUES ('$id',NOW(),'$target' ,'$target1','$ext' )";
  46.  
  47.  
  48. $query = mysqli_query($connect, $ins);
  49.  
  50. if ($query)
  51. {
  52. echo 'Dane zostały wpisane do bazy <br />';
  53. }
  54. else
  55. echo 'Błąd przy dodawaniu rekordów do bazy <br />';
  56.  
  57. //echo '<img src="' . GW_LOKALIZACJA . $image . '" width="500px" heith="500px" alt="image" /></p>';
  58.  
  59. echo 'Nazwa: ' . $img['name'][$key] . '<br/>';
  60. echo 'Rozmiar: ' . $img['size'][$key] . '<br/>';
  61. echo 'Rozszerzenie pliku ' . $ext . "<br />";
  62. echo '<img src="' . GW_LOKALIZACJA . $image . '" width="300px" heith="300px" alt="image" /></p><br />';
  63. //echo 'Link: http://kafar.nazwa.pl/' . $target . '<br />';
  64. ?>
  65. <form>
  66. <input onclick="this.form.txt.select();" type="button" value="zaznacz kod">
  67. <textarea style="resize: none;" name="txt" cols="50" rows="4"><?php echo 'http://kafar.nazwa.pl/' . $target;?> </textarea>
  68. </form>
  69. <?php
  70.  
  71. mysqli_close($connect);
  72. }
  73. }
  74. else
  75. echo "Obrazek nie moze być wiekszy niż 5 mb";
  76. }
  77. else
  78. echo "Przesłany plik nie jest obrazekiem!!! <br /> Dostępne rozszerzenia: .gif, .jpeg, .pjpeg, .png ";
  79. }
  80. }
  81. }
  82. //wykoananie skryptu
  83. ?>
  84.  

ładnie wyciąga mime pliku i teraz co?
Cytat
w htaccesie przekierowuje wszystkie requesty z images na swój plik

jak mam to zrobić?

Ten post edytował kafar610 15.02.2015, 21:13:59
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.12.2025 - 22:17