Zapis pliku - monit o miejsce docelowe

Odpowiedz Nowy wątek
2015-01-29 12:32
ne0
0

Hej,
z WebAPI dostaję plik, kod webapi:

(....)
  var file = File.ReadAllBytes(filePath);

            HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK);
            response.Content = new StreamContent(new FileStream(filePath, FileMode.Open, FileAccess.Read));
            response.Content.Headers.ContentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue("attachment");
            response.Content.Headers.ContentDisposition.FileName = "Visits.csv";

            return response;

No i teraz odbieram to w angularJS:


            $http.get('./api/analytics/export',  { responseType: 'arraybuffer' })
  .success(function (data) {
      var file = new Blob([data], { type: 'application/csv' });
         saveAs(file, 'Visits.csv');

moje pytanie: co muszę zrobić aby wyskoczyło okienko do wskazania miejsca zapisu tego pliku? Bo obecnie automatycznie się do dzieje.

EDIT:
Jeszcze w sumie jest jedna sprawa: chce z WebAPI zwracać plik typu CSV a następnie zapytać usera gdzie chce go zapisać. Tak ogólnie chce zrobić.
dostaje teraz to tak jak wyżej tylko jak to teraz zapisać?


Pomogłem? To dobrze :)
edytowany 1x, ostatnio: ne0, 2015-01-29 13:13

Pozostało 580 znaków

2015-01-29 13:44
1

No a niby gdzie się teraz zapisuje? Czy bierzesz pod uwagę, że już chyba żadna przeglądarka nie pyta o to gdzie zapisać plik, tylko automatycznie zapisuje do folderu pobieranych plików? Spróbuj ściągnąć cokolwiek innego. I nie ma opcji wymusić (z poziomu JS) okienka z folderami.


Pokaż pozostałe 4 komentarze
@dzek69, to czy FF pyta gdzie zapisać, zależy od użytkownika. - bogdans 2015-01-29 15:23
więc jeszcze raz ponawiam pytanie. odbieram plik w taki sposób jak powyżej i jak teraz zrobić monit aby user wybrał lokalizacje i tam to zapisać? - ne0 2015-01-29 15:27
Ty nie możesz nic zrobić, użytkownik może sobie ustawić by ff go pytał o każdy plik. - bogdans 2015-01-29 15:47
to teraz co mam powiedziec szefowi zeby zrozumial ? - ne0 2015-01-29 15:48
bo to nie musi byc z JS wywolane...moze byc jakos inaczej ale nie wiem jak wtedy to zrobic. tak zeby sciagnac plik z API i to okno pokazac. - ne0 2015-01-29 15:49

Pozostało 580 znaków

2015-01-29 15:40
ne0
0

Ewentualnie jak jeszcze inaczej to zrobić? Bo gdzieś czytałem że można jakiegoś ukrytego iframe zrobić tylko nie wiem co to jest i jak to zrobić


Pomogłem? To dobrze :)

Pozostało 580 znaków

2015-01-29 16:00
0

jedynie flashem to zrobisz - twój applet flashowy musiałby otrzymać link do pliku (wygenerowanego bloba nie przekażesz do flasha na 99%! musi być plik na serwerze)

a szefowi powiedz "to zależy od przeglądarki i nic z tym nie możemy zrobić, tak samo jak nie możemy ustawić użytkownikowi gołej baby na tapecie poprzez stronę internetową"


Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0