2011-09-15 20 views
9

Bir web dosyası indirmek mümkün, ancak indirme iletişim kutusu açıldığında, dosya adı yeniden adlandırılır.Javascript rename dosyası indir

Ör: Dosya: http://<server>/<site>/test.txt

ve ben dosyayı, dosya adıyla açık indirme iletişim indirmek için tıkladığımda: test001.txt.

Bunu nasıl sağlayabilirim?

cevap

0

Bunu Javascript'te yapamazsınız. "Save to" -dialog tarayıcı tarafından açılır ve buna JS aracılığıyla erişemezsiniz, işletim sisteminden standart bir iletişim kutusu.

Kullanıcı, indirme bağlantısını tıklamadan önce sunucunuzun istenen adı vermesi gerekir.

İndirilen dosyayı yeniden adlandırmak için nedeniniz nedir?

+0

ben Dosyaları bir Sharepoint kitaplığında bulundurmak ve dosyaları indirmek ve belgeyi eklemek için özel bir eylem oluşturmaya çalışıyorum dosya adı sürümü. Bu özel eylemi yapmak için yalnızca javascript kodunu kullanabilirim. Herhangi bir ipucu? – bruno2007

2

Bu efekt, ek bir başlık gönderilerek gerçekleştirilir. PHP'yi, örneğin, aşağıdakileri gerçekleştirmek için kullanabilirsiniz:

URL'ler, isteği bir PHP dosyasına yönlendiren .htaccess, (dahili olarak) kullanılarak yeniden yazılabilir. Ben, başlık ayarlanabilir nasıl basit bir sabit kodlanmış örnek gösterecektir:

<?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

fakat bu, aradığı dinamik doğayı tamamlamıyor. Tahminimce – Truesky

+0

Başlıkların nasıl ayarlanabileceğini gösterdim. PHP'de programlama becerisine sahipse, amacını gerçekleştirmek için kodu değiştirebilir. –

0

dosya adının sürekli tipini döndürmektir ne istediğini, sen takip edecek bir senaryo yazmaya varsa Bu ve bu dosyayı kullanıcıya geri verin. Bir yol basit PHP kullanarak veya bir kerede birden fazla dosya varsa daha gelişmiş bir şey, muhtemelen php'de bir cURL çağrısıdır, böylece birkaç farklı dosya üretebilir. Yaptığınız şey bu olduğunu tahmin ediyorum, ancak bu anlamda kayıt kutusunda dinamik olarak değiştirilmiş dosya adı olamaz, savename.txt dosya adını döndürürsünüz.

2

Bağlantının download özniteliğini kullanın. Ancak, yalnızca Chrome tarayıcısında çalışır :)

+2

Şimdi de FF'de :) –

+0

http://caniuse.com/#feat=download Artık Opera ve Android tarayıcısında destekleniyor. –

13

InviS'in önerdiği gibi, artık bir download özniteliği var.

Örnek:

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

Bunu diğer tarayıcılar için target = "_ blank" ile birlikte kullanıyorum. – Darren

+1

http://caniuse.com/#feat=download Artık Opera ve android tarayıcıda desteklenmektedir. –

+0

Teşekkürler, cevabımı güncelledim –