Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [AJAX][PHP]jquery-formularz wysyłania pliku-problem
Forum PHP.pl > Forum > Przedszkole
organista18
Witam. Mariusza walk z CMS'em ciąg dalszy. Problem na który tym razem się natknąłem jest dość dziwny. Mam na stronie taki oto formularz:

  1. <form id="form2" action="/" method="post" enctype="multipart/form-data">
  2. <p>Wybierz obraz który chcesz załadować na serwer i dodać do artykułu:</p>
  3. <table width="288" border="0">
  4. <tr>
  5. <td width="42" height="28">Plik:</td>
  6. <td width="236"><input type="file" name="file" id="file" value=""></td>
  7. </tr>
  8. <tr>
  9. <td height="28"></td>
  10. <td><p align="right"><input align="right" type="button" class="button" id="submit2" value=" Wyślij "></p></td>
  11. </tr>
  12. </table>
  13. </form>


Dane z tego formularza chcę wysłać do pliku ze skryptem php, który załaduje plik obrazu na serwer, skrypt wygląda tak:
  1. <?php
  2. include("inc_config.php");
  3. //error_reporting(0);
  4. if(login())
  5. {
  6. if ((($_FILES["file"]["type"] == "image/gif")
  7. || ($_FILES["file"]["type"] == "image/jpeg")
  8. || ($_FILES["file"]["type"] == "image/pjpeg"))
  9. && ($_FILES["file"]["size"] < 30241024))
  10. {
  11. if ($_FILES["file"]["error"] > 0)
  12. {
  13. echo "Nie mozna zaladowac pliku! <br />";
  14. echo "Kod bledu: " . $_FILES["file"]["error"] . "<br />";
  15. }
  16. else
  17. {
  18. echo "Upload: " . $_FILES["file"]["name"] . "<br />";
  19. echo "Typ: " . $_FILES["file"]["type"] . "<br />";
  20. echo "Rozmiar: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
  21. if (file_exists("upload/" . $_FILES["file"]["name"]))
  22. {
  23. echo "Plik ". $_FILES["file"]["name"] . " juz istnieje. ";
  24. }
  25. else
  26. {
  27. move_uploaded_file($_FILES["file"]["tmp_name"],
  28. "../../upload/" . $_FILES["file"]["name"]);
  29. $content = "upload/" . $_FILES["file"]["name"];
  30. echo $content;
  31. }
  32. }
  33. }
  34. else
  35. {
  36. echo "Bledny plik!";
  37. }
  38. }
  39. else if(!login())
  40. {
  41. echo "Nie masz dostepu do tej strony!";
  42. }
  43. ?>


A dane przesyłam ajaxem przez jquery:

  1. $("#submit2").click(function(){
  2. var plik = $("#file").val();
  3. $.ajax({
  4. type: "POST",
  5. url: "include/inc_arts_uploadimg_script.php",
  6. data: { file: plik },
  7. // msg zawiera wartość zwróconą przez skrypt php w przypadku poprawnego zakończenia działania
  8. success: function(msg) {
  9. // zapiszmy wynik działania skryptu na stronie html w div o id="content"
  10. $("#l").fadeOut("slow", function(){$("#wrapp2").html(msg);});
  11. // schowajmy fomę
  12. $("#form2").fadeOut("slow");
  13. $("#l").hide();
  14. },
  15. // wystąpiły błędy
  16. error: function (XMLHttpRequest, textStatus, errorThrown) {
  17. $("#l").fadeOut(function(){
  18. $("#wrapp2... dalej są funkcje przeładujące divy...


Problem polega na tym, że jeśli dane z tego formularza prześlę do pliku php bez ajaxa metodą post, to skrypt php załaduje plik na serwer i jest wszystko ok, ale gdy tylko chcę to zrobić przez ajax, to php wyrzuca komunikat "Błędny plik", czyli wychodzi na to że skrypt nie dostaje parametru "file"...

Czy potrafi ktoś pomóc?
potreb
Przez Ajax wysłać plik - nie da się.
organista18
No ale kliknięcie przycisku submit w czystym html-u też nie powoduje rozpoczęcia pobierania pliku, plik dopiero ładowany jest przez php, no nie? to dlaczego miałby ajax nie wywołać tego pliku php?
potreb
Wiesz, też niedawno się nad tym zastanawiałem a raczej robiłem to samo i odpowiedzi nie dostałem.
organista18
a jak ominąłeś problem?

ja znalazłem coś takiego:
http://phpletter.com/Demo/AjaxFileUpload-Demo/

ale mimo wszystko chciałbym, aby to nie była wierna kopia czegoś winksmiley.jpg
potreb
Właśnie też tego używam i działa smile.gif Nie musi być wierną kopią czegoś.
organista18
To może podpowiedz, w jaki sposób pobierasz spowrotem nazwę pliku który się zauploadowało, bo właśnie chcę załadować plik na serwer i dodać go jako obrazek w tinyMce winksmiley.jpg?
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.