2012-07-05 6 views
33

Bir tarayıcı, bir dizenin içeriğini sistemindeki bir dosyaya kaydedebilmeleri için bir "tarayıcı olarak kaydet" i nasıl görüntüleyebilirim?Bir tarayıcı nasıl yapılır "kullanıcı, bir dizgenin içeriğini sistemindeki bir dosyaya kaydedebilsin diye iletişim kur" olarak kaydedilsin mi?

Örneğin

:

var myString = "my string with some stuff"; 
save_to_filesystem(myString,"myString.txt"); 

böyle bir şey ile sonuçlanır: durumda herkes yılında

Example

+0

Cevabı burada bulabilirsiniz: http://stackoverflow.com/questions/2897619/using-html5-javascript-to-generate-and-save-a-file – demux

+0

@ArnarYngvason bunu yapmakla aynı işlemdir bu angularjs içinde? – bleykFaust

+1

@bleykFaust, tüm ön uç js uygulamalarında prosedür aynıdır. – demux

cevap

24

hala merak edilir ...

böyle yaptım:

<a href="data:application/xml;charset=utf-8,your code here" download="filename.html">Save</a>

benim kaynağını hatırlayamıyorum ama aşağıdaki teknikler \ özellikleri kullanır:

  1. html5 indir nitelik
  2. veri Uri

Bulunan referans:

http://paxcel.net/blog/savedownload-file-using-html5-javascript-the-download-attribute-2/


DÜZENLEME: Eğer yorumlarla yapar DEĞİL eser

yılında
  1. Internet Explorer
  2. Safari (gerçi Kenar v13 içinde işleri)
  3. iOS Safari
  4. Opera Mini
  5. toplamak gibi
  6. Android Tarayıcı (4.Bir sonraki linkte

    <input type="button" name="save" value="Save" onclick="javascript:document.execCommand('SaveAs','true','your_file.txt')"> 
    

    : execComand kullanma

http://caniuse.com/#feat=download

-5

) 3 ve alt bunun için bir javascript kütüphanesi vardır execCommand

+1

Üzgünüz, 'SaveAs' tanımlı bir komut değil. – Sablefoste

6

, bkz

Ancakgibi,

function data2blob(data, isBase64) { 
    var chars = ""; 

    if (isBase64) 
    chars = atob(data); 
    else 
    chars = data; 

    var bytes = new Array(chars.length); 
    for (var i = 0; i < chars.length; i++) { 
    bytes[i] = chars.charCodeAt(i); 
    } 

    var blob = new Blob([new Uint8Array(bytes)]); 
    return blob; 
} 

ve sonra blob saveAs çağırır: 0 fonksiyonu tarayıcıya saf dize göndermez, sen blob dönüştürmek gerekir

var myString = "my string with some stuff"; 
saveAs(data2blob(myString), "myString.txt"); 

Tabii eklemeyi unutmayın yukarıda bahsedilen kullanarak web sayfanıza javaScript kütüphanesi <script src=FileSaver.js>

+4

Bu, bir iletişim kutusu göstermeden "myString.txt" dosyasını İndirilenler klasörüne kaydeder. – meetar

+0

Ahh, hayır yok! Hepsi otomatik olarak kaydedilir. Yani bu her tarayıcı için bir özellik midir, yoksa bir senaryo ile davranışı tetiklemenin bir yolu var mı? – meetar

+4

Tarayıcı başına bir özellik olduğuna inanıyorum. Chrome'da ayarlar, gelişmiş ayarlar, onay kutusu "İndirmeden önce her dosyanın nereye kaydedileceğini sor" –

9

Bu javascript HTML5 saveAs fonksiyonunun uygulaması bu çapraz tarayıcı kullanarak mümkündür: https://github.com/koffsyrup/FileSaver.js

Tek yapmanız gereken metin kaydetmekse, yukarıdaki betik, tüm tarayıcılarda (IE'nin tüm sürümleri dahil olmak üzere), JS dışında hiçbir şey kullanmadan çalışır.

+3

tarayıcıda zorlamak indir, pop-up kaydetme iletişim kutusu – user889030

İlgili konular