Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Upload plików bez przejścia do innej strony
Forum PHP.pl > Forum > XML, AJAX
castagir
Witam!

Potrzebuję stworzyć prosty upload obrazu, bez przeładowania strony.
Chodzi o wrzucenie avatara, a zanim nastąpi przeniesienie na serwer, najpierw zweryfikować czy jest odpowiedniego formatu i wagi.

Jedyne poradniki jakie znalazłem w internecie to typowe <FORM>, które po prostu przerzucają na nową stronę. Natomiast gry próbuję grzebać w JS, to ciągle mi wychodzi, że nie może odnaleźć żadnych files w tablicy, albo w ogóle nic nie reaguje.
Nie miałem z tym wcześniej styczności i całkowicie nie wiem jak to ugryźć. Czy ktoś może mógłby polecić jakiś dobry poradnik, lub napisać kilka wskazówek od czego zacząć lub co robić dalej?
Comandeer
A może https://developer.mozilla.org/en/docs/Web/API/FormData ?
viking
A jak chcesz od razu gotowe to możesz użyć http://www.dropzonejs.com/
castagir
Mam taki przycisk, z którego chciałbym wydobyć więcej o tym pliku:
  1. <div class="if-A1">
  2. <span>wybierz</span>
  3. <input type="file" name="plik-avatar" accept="image/*">
  4. </div>


Próbuję takich metod i nic:
  1. var plik = new FormData($('input[name="plik-avatar"]'));
  2. -----------------------
  3. var plik = new FormData($('input[name="plik-avatar"]').files[0]);
  4. -----------------------
  5. var plik = $('input[name="plik-avatar"]');
  6. alert(plik.name);
  7. -----------------------
  8. var plik = $('input[name="plik-avatar"]');
  9. alert(plik.files[0].name);


Cytat(viking @ 21.05.2016, 13:01:20 ) *
A jak chcesz od razu gotowe to możesz użyć http://www.dropzonejs.com/


Nie lubię korzystać z gotowców, bo za dużo jest szperania w kodzie i modyfikacji. Staram się robić po swojemu, tylko najtrudniej jest mi zacząć, gdyż nie wiadomo z którego miejsca podejść niektóre tematy.
Ma to też takie znaczenie, że jeżeli się nauczę tego teraz to później łatwiej mi będzie modyfikować, a będę to robić na 100%.

Mimo to dzięki za podesłanie smile.gif
kayman
  1. var image = document.getElementById("img");
  2. file = image.files[0];
  3. if (file.type === 'image/jpeg') {
  4.  
  5. formData = new FormData();
  6. formData.append('action', 'saveImage');
  7. formData.append('image', file);
  8.  
  9. $.ajax({
  10. url: '/ajax.php',
  11. type: "POST",
  12. data: formData,
  13. processData: false,
  14. contentType: false,
  15. success: function (result) {
  16. successSaveImage(result);
  17. }
  18. });
  19. } else {
  20. $('#error').text('Zły plik');
  21. }
Comandeer
Kod
var plik = new FormData($('input[name="plik-avatar"]'));

Nic dziwnego, że nie działa, skoro przekazujesz obiekt jQuery opakowujący input a nie formularz jako obiekt DOM
Kod
var form = new FormData( document.querySelector( 'form.jakis-tam' ) );
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.