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

question-closed Zapis za pomocą biblioteki FileSaver.js na telefonach

Object Storage Arubacloud
0 głosów
186 wizyt
pytanie zadane 12 lipca 2021 w JavaScript przez piter11251 Obywatel (1,280 p.)
zamknięte 13 lipca 2021 przez ScriptyChris

Cześć,

wykonałem skrypt który zapisuje kontakty w pliku .vcf i tworzy on ten plik i wszystko gra, natomiast jak wrzucilem na telefon z androidem(na ios nie testowałem), to skrypt nie pobiera pliku .vcf na pamiec tylko wlasciwie przycisk który uruchamia cały skrypt w ogóle nie reaguje

HTML:

<button onclick="createElements()">Generuj plik z kontaktami</button>

JS:

var generate = vCardArrayGenerator(firstName, lastName, nrArray, stanowiskoArray, mobArray, numberOfElements);
var blob = new Blob(generate, {type: "text/plain;charset=utf-8"});
saveAs(blob, "kontakty.vcf");

 

komentarz 12 lipca 2021 przez ScriptyChris Mędrzec (190,190 p.)

Spróbuj namierzyć, czy kod rzuca błędem na telefonie: owiń tą funkcję w try..catch i użyj alert, albo skorzystaj z remote debugging i wtedy powinieneś móc nawet użyć breakpointa na wyjątku. W jaki sposób to uruchamiasz - normalnie jako strona, czy jakoś inaczej?

komentarz 12 lipca 2021 przez adrian17 Ekspert (344,860 p.)
A co mówi konsola chrome'a w devtoolsach?

edit: ups, zostałem uprzedzony :)
komentarz 12 lipca 2021 przez piter11251 Obywatel (1,280 p.)

@ScriptyChris, uruchamiam jako stronę normalnie 

komentarz 12 lipca 2021 przez ScriptyChris Mędrzec (190,190 p.)
Ok, a sprawdziłeś czy ten kod nie rzuca błędami? Jakiej przeglądarki używasz w telefonie?
komentarz 12 lipca 2021 przez piter11251 Obywatel (1,280 p.)
Nie sprawdziłem tego jeszcze, spróbuje za pomocą tego remote debug bo nie rozumiem za bardzo jak zrobic za pomocą try..catch, a przegladarka to chrome
komentarz 12 lipca 2021 przez piter11251 Obywatel (1,280 p.)
GET content://com.mi.android.globalFileexplorer.myprovider/external_files/Download/skrypt/FileSaver.js net::ERR_FILE_NOT_FOUND
Natomiast ja umieściłem plik FileSaver.js w jednym folderze z index.html
komentarz 12 lipca 2021 przez ScriptyChris Mędrzec (190,190 p.)

nie rozumiem za bardzo jak zrobic za pomocą try..catch

Owijasz całe wnętrz funkcji createElements w try..catch

function createElements() {
  try {
      
      // tutaj cały kod funkcji
      
  } catch (error) {
      alert(error); // <-- jeśli error będzie długi, to możesz wrzucić go w DOM
  }
}

net::ERR_FILE_NOT_FOUND

To może być wina błędnej ścieżki: "kontakty.vcf".

komentarz 12 lipca 2021 przez piter11251 Obywatel (1,280 p.)
ReferenceError: saveAs is not defined

Tak jakby nie potrafił odczytać FileSaver'a
komentarz 12 lipca 2021 przez ScriptyChris Mędrzec (190,190 p.)
Nom, a w jaki sposób podpinasz tę bibliotekę do strony? I pisałeś, że poza telefonem Ci działa - to był zwykły PC?
komentarz 12 lipca 2021 przez piter11251 Obywatel (1,280 p.)

Przed skryptem właściwym wpisuje 

<script src="FileSaver.js"></script>

I na zwykłym PC to działa 

komentarz 13 lipca 2021 przez ScriptyChris Mędrzec (190,190 p.)
Jaki URL (adres) używasz do wejścia na stronę przez PC, a jaki przez telefon?
1
komentarz 13 lipca 2021 przez piter11251 Obywatel (1,280 p.)
edycja 13 lipca 2021 przez piter11251
pc: file:/C:/Users/admin/Desktop/skrypt/index.html

tel: content://com.mi.android.globalFileexplorer.myprovider/external_files/Download/skrypt/index.html
komentarz 13 lipca 2021 przez ScriptyChris Mędrzec (190,190 p.)
edycja 13 lipca 2021 przez ScriptyChris

Czyli uruchamiasz stronę bezpośrednio z pamięci urządzenia zamiast z serwera.

Czy na telefonie w folderze content://com.mi.android.globalFileexplorer.myprovider/external_files/Download/skrypt/   jest plik FileSaver.js? Jeśli jest, to czy możesz pokazać screen z tego folderu?

I co to za protokół content? Dlaczego spójnie nie uzywasz file, jak na PC?

[edycja]

I co to za protokół content? Dlaczego spójnie nie uzywasz file, jak na PC?

Ah, to chyba polityka bezpieczeństwa Androida.

https://developer.android.com/about/versions/nougat/android-7.0-changes.html#perm

Podobne pytania

+1 głos
0 odpowiedzi 345 wizyt
0 głosów
1 odpowiedź 2,520 wizyt
pytanie zadane 27 maja 2020 w Python przez tonn204 Mądrala (7,440 p.)
0 głosów
1 odpowiedź 880 wizyt

92,555 zapytań

141,403 odpowiedzi

319,554 komentarzy

61,939 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!

...