2011-09-15 22 views
9

Chcę móc pobrać plik sieciowy, ale gdy okno dialogowe pobierania zostanie otwarte, nazwa pliku zostanie zmieniona.Plik zmiany nazwy pliku JavaScript do pobrania

Ex: Plik: http://<server>/<site>/test.txt

i kiedy kliknij aby pobrać plik, ściągnie otwarte okno z nazwą pliku: test001.txt.

Jak mogę to osiągnąć?

Odpowiedz

0

Nie można tego zrobić w JavaScript. "Zapisz na" -dialog jest otwierany przez przeglądarkę i nie można uzyskać do niego dostępu poprzez JS, jest to standardowe okno dialogowe z systemu operacyjnego.

Twój serwer musi dostarczyć plik z żądaną nazwą, zanim użytkownik kliknie link do pobrania.

Jaki jest powód, aby mimo to zmienić nazwę pobranego pliku?

+0

I mieć pliki w bibliotece programu Sharepoint i próbuję utworzyć niestandardową akcję, aby pobrać pliki i dodać dokument wersja w nazwie pliku. Aby wykonać to działanie niestandardowe, mogę używać tylko kodu javascript. Jakieś wskazówki? – bruno2007

2

Efekt ten uzyskuje się, wysyłając dodatkowy nagłówek. Możesz na przykład użyć PHP, aby to osiągnąć:

URL-e można przepisać przy użyciu .htaccess, (wewnętrznie) przekierowując żądanie do pliku PHP. Pokażę prosty zakodowane przykład, jak nagłówek można ustawić:

<?php 
    header('Content-type: text/plain'); 
    header('Content-Disposition: attachment; filename="test001.txt"'); 
    readfile('files/test.txt'); 
    //assuming that the files are stored in a directory, not in a database 
?> 
+0

, ale nie osiąga dynamicznej natury, której szuka. Domyślam się, że – Truesky

+0

Pokazałem, jak można ustawić nagłówki. Jeśli ma umiejętności programowania w PHP, może zmienić kod, aby osiągnąć swój cel. –

0

Jeśli to, co chcesz, aby powrócić ciągły typ nazwa pliku, trzeba napisać skrypt, który będzie śledzić to i dostarczyć ten plik z powrotem do użytkownika. Jednym ze sposobów jest użycie zwykłego PHP lub czegoś bardziej zaawansowanego, jeśli jest to kilka plików jednocześnie, prawdopodobnie wywołanie cURL w php, aby mógł wygenerować kilka różnych plików. Zgaduję, że właśnie to robisz, ale nie możesz zmienić nazwy pliku dynamicznie na polu zapisu w tym sensie, zwrócisz nazwę pliku savename.txt.

2

Użyj atrybutu linku, używając atrybutu . Ale działa tylko w przeglądarce Chrome :)

+2

Teraz w FF też :) –

+0

http://caniuse.com/#feat=download Teraz jest obsługiwany w przeglądarce Opera i Android. –

13

Zgodnie z sugestią InviS, w linkach znajduje się atrybut download.

przykład:

<a href="http://server/site/test.txt" download="test001.txt">Download Your File</a> 
+0

Używam tego w połączeniu z target = "_ blank" dla innych przeglądarek. – Darren

+1

http://caniuse.com/#feat=download Now jest obsługiwany w przeglądarce Opera i Android. –

+0

Dzięki, zaktualizowałem moją odpowiedź –

Powiązane problemy