Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Oddziaływanie $_POST[] na $_GET.
Forum PHP.pl > Forum > PHP
ossUter
Witam,

mam taki problem, probuje zrobic upload plikow, który bedzie na "upload_files.php?screen=upload".

Mam taki kod:
  1. switch($_GET['screen'])
  2. {
  3. case 'upload':
  4. $target_dir = "uploads/";
  5. $target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
  6. $uploadOk = 1;
  7. $imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);
  8. // Check if image file is a actual image or fake image
  9. if(isset($_POST["submit"])) {
  10. $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
  11. if($check !== false) {
  12. echo "File is an image - " . $check["mime"] . ".";
  13. $uploadOk = 1;
  14. } else {
  15. echo "File is not an image.";
  16. $uploadOk = 0;
  17. }
  18. }
  19. // Check if file already exists
  20. if (file_exists($target_file)) {
  21. echo "Sorry, file already exists.";
  22. $uploadOk = 0;
  23. }
  24. // Check file size
  25. if ($_FILES["fileToUpload"]["size"] > 500000) {
  26. echo "Sorry, your file is too large.";
  27. $uploadOk = 0;
  28. }
  29. // Allow certain file formats
  30. if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
  31. && $imageFileType != "gif" ) {
  32. echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
  33. $uploadOk = 0;
  34. }
  35. // Check if $uploadOk is set to 0 by an error
  36. if ($uploadOk == 0) {
  37. echo "Sorry, your file was not uploaded.";
  38. // if everything is ok, try to upload file
  39. } else {
  40. if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
  41. echo "The file ". basename( $_FILES["fileToUpload"]["name"]). " has been uploaded.";
  42. } else {
  43. echo "Sorry, there was an error uploading your file.";
  44. }
  45. }
  46.  
  47. break;
  48. default:
  49. break;
  50. }


Kod na upload z w3school.com.

I formularz w HTML:
  1. <form action="upload_files.php?screen=upload" method="post" enctype="multipart/form-data">
  2. Select image to upload:
  3. <input type="file" name="fileToUpload" id="fileToUpload">
  4. <input type="submit" value="Upload Image" name="submit">
  5. </form>


Bez instrukcji switcha działa bezproblemowo, czyli dochodze do wniosku, ze cos koliduje miedzy $_GET a $_POST. Jest moze jakas alternatywa do tego?
lukaskolista
Czym się objawia "niedziałanie"? Co do alternatyw do $_GET to jest i nazywa się "routing".

btw. po co pusty default?
ossUter
Default ma swój kod, zupełnie nieingerujący w upload.

Co nie działa?

Nie wgrywa plików w podaną ścieżkę (W ogole brak komunikatow po uploadzie, a po wejsciu na localhost/upload_files.php?screen=upload sa komunikaty z echo false
"Sorry, file already exists.Sorry, only JPG, JPEG, PNG & GIF files are allowed.Sorry, your file was not uploaded. "
lukaskolista
I sądzisz, że to wina switch z $_GET? - 100% nie.

Wklej kod przed zmianami, który działa to Ci powiem, co robisz nie tak.
ossUter
Bez switcha działa:

  1. $target_dir = "uploads/";
  2. $target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
  3. $uploadOk = 1;
  4. $imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);
  5. // Check if image file is a actual image or fake image
  6. if(isset($_POST["submit"])) {
  7. $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
  8. if($check !== false) {
  9. echo "File is an image - " . $check["mime"] . ".";
  10. $uploadOk = 1;
  11. } else {
  12. echo "File is not an image.";
  13. $uploadOk = 0;
  14. }
  15. }
  16. // Check if file already exists
  17. if (file_exists($target_file)) {
  18. echo "Sorry, file already exists.";
  19. $uploadOk = 0;
  20. }
  21. // Check file size
  22. if ($_FILES["fileToUpload"]["size"] > 500000) {
  23. echo "Sorry, your file is too large.";
  24. $uploadOk = 0;
  25. }
  26. // Allow certain file formats
  27. if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
  28. && $imageFileType != "gif" ) {
  29. echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
  30. $uploadOk = 0;
  31. }
  32. // Check if $uploadOk is set to 0 by an error
  33. if ($uploadOk == 0) {
  34. echo "Sorry, your file was not uploaded.";
  35. // if everything is ok, try to upload file
  36. } else {
  37. if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
  38. echo "The file ". basename( $_FILES["fileToUpload"]["name"]). " has been uploaded.";
  39. } else {
  40. echo "Sorry, there was an error uploading your file.";
  41. }
  42. }
  43.  
lukaskolista
Ciekawe, bo ja dostaję błędy:

Notice: Undefined index: fileToUpload in C:\xampp\htdocs\index.php on line 4

Notice: Undefined index: fileToUpload in C:\xampp\htdocs\index.php on line 24
Sorry, only JPG, JPEG, PNG & GIF files are allowed.Sorry, your file was not uploaded.
ossUter
Wczesniej dzialalo, teraz nie, a bledu nie moge sie dopatrzec...

COs tu jest nie taak?
lukaskolista
Odwołujesz się do nieistniejących kluczy $_FILES oraz sprawdzasz, czy plik istnieje nawet wtedy, gdy formularz nie zostanie wysłany.
Cytat
Wczesniej dzialalo, teraz nie, a bledu nie moge sie dopatrzec...

COs tu jest nie taak?

Zdecydowanie smile.gif
maly_swd
przed switch daj;

echo "<pre>";
print_r($_GET);
print_r($_POST);
print_r($_FILES);

exit;
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.