• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

File undefined - ng file upload

Object Storage Arubacloud
0 głosów
375 wizyt
pytanie zadane 31 sierpnia 2017 w JavaScript przez Kondzio Mądrala (5,230 p.)
edycja 31 sierpnia 2017 przez Kondzio

Witam, korzystam z ng file upload, by załadować plik użytkownika. Wydaje mi się, że robię wszystko co trzeba, żeby to ruszyło, a mimo to w konsoli po wywyłaniu console.log wywala mi undefined.

Przycisk wysyłania całej wiadomości wraz z załącznikiem:

<button type="button" class="btn btn-success btn-lg" ng-click="send()" ng-if="data.try">
    <span class="glyphicon glyphicon glyphicon-send"></span> Send
</button>

File input dla pliku:

 <input type="file" ngf-select="uploadFiles($file, $invalidFiles)"/>

JS:

$scope.send = function(){
    $scope.uploadFiles = function(file, errFiles) {
        $scope.f = file;
        $scope.errFile = errFiles && errFiles[0];
        if (file) {
            file.upload = Upload.upload({
                url: 'static/css',
                data: {file: file}
            });
            file.upload.then(function (response) {
                $timeout(function () {
                    file.result = response.data;
                });
            }, function (response) {
                if (response.status > 0)
                    $scope.errorMsg = response.status + ': ' + response.data;
            });
        }   
        console.log("ASDASD1111111111");
        console.log($scope.f);
    }
    $scope.data.try = false ;
    $scope.sendMailJava();
}   

Ma ktoś pomysł czemu to nie działa? Tutaj http://jsfiddle.net/danialfarid/0mz6ff9o/135/ jest dokładnie to samo i działa.

 

Sory za dwie ramki, coś mi się tutaj nie udało xd

1
komentarz 31 sierpnia 2017 przez Ehlert Ekspert (212,670 p.)

Doceniam formę, nie jest to pierwotne miejsce kodu, więc cytujesz, ale lepiej usuń znaczniki cytatu bo nikt nie pomoże laugh

komentarz 31 sierpnia 2017 przez Kondzio Mądrala (5,230 p.)

Wporzo, teraz możecie pomagać sad

1
komentarz 31 sierpnia 2017 przez ScriptyChris Mędrzec (190,190 p.)

Hmm, na JSFiddle użyli <button type="file"> (co jest dziwne, bo ten znacznik HTML nie przewiduje ustawienia wartości file dla type). U Ciebie natomiast jest <input type="file"> co jest już prawidłowym zapisem. Skoro tam działa, to może tu jest problem?

U Ciebie jest też inna wartość dla klucza url -> 'static/css'. Masz jakieś błędy w konsoli?

komentarz 31 sierpnia 2017 przez Kondzio Mądrala (5,230 p.)

Tak, button type = "file" u mnie w ogóle nie działa, w tym jest problem, dlatego użyłem input'a. To nie jest akurat błąd, tak jak zauważyłeś, bo nawet na JSFiddle zmieniłem buttona na inputa i działało to tak samo.

static/css, bo chciałem plik zapisać w tym miejscu aby potem pobrać go z serwera. Dowiedziałem się jednak jaka może być przyczyna, ale nie wiem jak ją naprawić, może pomożecie.

Ta część

file.upload = Upload.upload({
                url: 'static/css',
                data: {file: file}
            });

to ma być dyrektywa, wcześniej zapisana jako  'Upload' (można zobaczyć na JSFiddle, nawet w dokumentacji pisze, że jest to service, dyrektywa i controller w jednym pliku). Jak wpisywałem do mojego controllera to coś nie trybiło z tym Upload'em (czepiało się o to). Tutaj do Was pytanie, nawet jak nie sprawdzi się w tym wypadku: jak mogę zainicjować tą dyrektywę Upload w osobnym pliku? Jak wyglądałoby to składniowo? Bo spróbuję ją podpiąć z osobnego pliku.

1
komentarz 31 sierpnia 2017 przez ScriptyChris Mędrzec (190,190 p.)

 Jak wpisywałem do mojego controllera to coś nie trybiło z tym Upload'em (czepiało się o to)

Pokaż kod - być może źle wstrzyknąłeś Upload. Dyrektywę inicjujesz (tworzysz) dla określonego modułu lub jego namespace'u. Nie ma znaczenia, gdzie umieścisz plik z dyrektywą - istotne abyś go podpiął w pliku HTML, w którym jest również podpięty plik zawierający inicjację modułu angularowego. Całość jest i tak dostępna w globalnym obiekcie window.angular.

Czy masz lub miałeś jakieś błędy w konsoli?

komentarz 1 września 2017 przez Kondzio Mądrala (5,230 p.)

Dobra, już rozwiązałem, bardzo dziękuję za pomoc Krzycho bo mnie naprowadziłeś ;) Faktycznie źle wstrzyknąłem Upload, a to dlatego, że u mnie dyrektywy są wstrzykiwane w osobnym pliku więc nic mi nie dało zainicjowanie go w tym moim. 

 

W każdym razie po wstrzyknięciu działa laugh

komentarz 1 września 2017 przez Kondzio Mądrala (5,230 p.)
Dobra, mam kolejne pytanie odnośnie tego. Co wpisać dla url,by połączyć się z bazą danych Javy? Bo ciężko mi jeszcze idzie łączenie gotowych do wysłania obiektów z backendem.
1
komentarz 1 września 2017 przez ScriptyChris Mędrzec (190,190 p.)
To zależy czy i jakie masz API - jest tam pewnie określona ścieżka, pod którą dostępna jest usługa odpytująca bazę. Więcej nie podpowiem, bo na backend'zie się nie znam.
komentarz 2 września 2017 przez Kondzio Mądrala (5,230 p.)
Już praktycznie wszystko mam ogarnięte, miałeś rację, url: odnosi się do bezpośredniego zapytania backendu (w moim przypadku Java spring). Ogólnie miałem jeszcze problem z podpięciem pliku pod http post'a, ale na szczeście znalazłem rozwiązanie transferrequest :)

 

Dzięki za porady!

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
1 odpowiedź 183 wizyt
pytanie zadane 13 czerwca 2020 w JavaScript przez Allen Obywatel (1,010 p.)
0 głosów
0 odpowiedzi 278 wizyt
pytanie zadane 8 listopada 2019 w JavaScript przez michal_php Stary wyjadacz (13,700 p.)
+1 głos
3 odpowiedzi 539 wizyt
pytanie zadane 30 kwietnia 2017 w JavaScript przez UltraSF Stary wyjadacz (11,740 p.)

92,551 zapytań

141,395 odpowiedzi

319,524 komentarzy

61,936 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...