Ściąganie pliku ze wskazanej lokalizacji (jquery)

Witam,

 

Tworzę stronkę która zleca generowanie raportów. Czas ich generowania sięga nie raz 23h dlatego po ich wygenerowaniu są one odkładane na dysk sieciowy.

 

Do ich ściągnięcia korzystam z pluginy fileDownload

 

Poniżej zamieszczam mój kod

$.fileDownload(data, {
               failCallback: function (html, url) {
                        ShowError("Błąd pobierania pliku");
               },
               httpMethod: 'GET',
});

w zmiennej “data” jest przekazywany adres do pliku w postaci

\\xxx.xxx.xxx.xxx.xxx\raport.csv

To ściąganie działa tylko dla IE. W przypadku Firefoxa z niewiadomych mi przyczyn na początek ścieżki jest dodawany adres "http://localhost/ReportApp/.

Nie mogę się tego wyzbyć mimo, że dla każdej przeglądarki przekazywana ścieżka jest identyczna.

Czym generujesz argument funkcji ? A return false /prevent default po tej funkcji masz ?

Firefox nie obsługuje chyba backslashy tylko normalne slashe.

w sumie to dziwne że IE to obsługuje. Musisz inaczej wystawiać dane.Teraz podajesz adres do windowsowego zasobu sieciowego, zrób na tym serwerze webdava albo coś co wystawia dane w inny sposób.

 

Strona jest robiona w MVC C#. Argument jest zwracany do widoku przez kontroler, a ten zaczytuje lokalizacje z pliku web.config.

Widzisz… Returna nie mam:/ Teraz jak patrzę na tutorial to rzeczywiście on jest. Jakoś się nim nie przejmowałem bo zawsze działało. Będę musiał to poprawić.

 

Próbowałem zmieniać na to i na to - za każdym razem firefox dodaje przed adres który mu przekazuję ten fragment "http://localhost"

 

 

 

Ta metoda działa w każdej przeglądarce jeśli to kontroler zwraca plik. Jednak teraz plik musi zostać zaczytany na prawach użytkownika, a nie serwera. Niestety dane są wystawiane zawsze do tej lokalizacji i na to nie mam wpływu. Wcześniej zamiast ściągania pliku próbowałem by js otwierał nowe okno z wybranym adresem url. Ale jest dokładnie ten sam problem. Na IE działa, a Firefox uparcie dodaje przedrostek w formie adresu lokalnego strony (jak wrzucę na serwer to dopina swój adres na serwerze).

No niestety, bez kodu w tym wypadku pozostaje ci debug. Jakoś tą różnicę między przeglądarkami musisz znaleźć, bo błąd leży po stronie serwera, zmienna data zawsze jest taka sama ? Porównaj też ciastka. Spróbuj ścieżkę zapisać w ciastku, ew zmień sposób pobierania tej ścieżki po wygenerowaniu pliku.

a spróbuj podać adres w formie

file://///xxx.xxx.xxx.xxx.xxx\raport.csv

 

Podałem na sztywno adres w powyższej formie (oraz różne kombinacje ze slashami i backslashami). IE działa. Fx oraz Chrome nie działa:/

A bez jquery ta ścieżka działa ? Jakie masz uprawnienia do tego katalogu ?

 

Ścieżka działa jak wchodzę przez dysk sieciowy. Działa jak próbuję ściągnąć jego zawartość przez kod zawarty w C#. Działa jak próbuje go otworzyć bezpośrednio w Firefoxie, Chromie oraz IE.

Firefox oraz Chrome na siłę wsadzają przed adres do raportu, adres aplikacji.

 

Chyba, że znacie inny sposób otwarcia pliku z zasobu sieciowego przez TypeScript/JavaScript ?

Próbowałem już “window.open” oraz właśnie “filedownload” i Fx i Chrome mają ten problem:/

Spróbujmy na początek przed twoją funkcją downloadu dołożyć.

 

alert(data);
data.replace('localhost','twoj_adres_domeny');
alert(data);

@LonngerM:

Na komputerze na którym działa przeglądarka to sprawa jest prosta. Np.:

<button onclick="$(‘a’).each(function(){this.setAttribute(‘href’,’//C:/’);});">KLIK</button>

Możesz dostawić dalej dowolną ścieżkę (używając slashy).

Z dysku sieciowego powinno działać podobnie w zależności od tego gdzie i w jaki sposób jest podmontowny ten dysk w systemie.

@up c: to lokalizacja lokalna, nie przejdzie w ścieżce do pobieranego pliku