2012-01-01 9 views
6

Bir metin dosyasına bir localStorage öğesi yazmak ve dosyayı belirtilen bir konumda depolamak için kullanıcıyı çağırmak istiyorum. Lütfen bu kodu genişletmeme yardım edin lütfen bana yardımcı olun.Chrome'da bir metin dosyasına localStorage verileri nasıl yazılır

+0

Belki bu size yardımcı olur: The Cat Whisperer on Github gh-pages İşte

JavaScript kodu: İşte Github bağlantı benim repo nedir? http://tutorialzine.com/2011/05/generating-files-javascript-php/ HTML5 Filewriter API'sini değil, bir PHP yardımcı sayfasını kullanır. –

cevap

4

, en kolay yolu kullanmak için bir veri URI (tabii PHP olmak zorunda değildir) tarayıcıda dosya ve kullanıcının istediği yere kaydetmesine izin ver. Ben bu tür URI için bir "farklı kaydet" -dialog göstermek mümkün olduğunu sanmıyorum: s.

Not: Bu, en azından IE8 gerektirir. Ama sanırım, localStorage'ı kullandığınızdan beri bu sizin gereksiniminizdir.

+1

Lütfen bana bir örnek verebilir misiniz? –

+0

window.location = "data: text/plain, Metniniz buraya"; –

+0

@Emilstenstorm Bunu beğendiniz mi? $ ('# ama'). tıklayın (function() {window.location = "data: text/plain, Verilerim"}); –

-1

Bu içeriği, PHP ile indirilebilen bir metin dosyasına yazmanız gerekir. JavaScript ile bu mümkün değil düşünüyorum. Bir metin dosyası olarak indirilebilecek bir php dosyasına bir POST isteği gönderebilirsiniz.

data:text/plain,Your text here 

Bu metin gösterecektir: Bir sunucu tarafı çözümü kullanmak istemiyorsanız

7

Kolayca hile yapan konsola ekleyebileceğiniz bu console.save (data, [filename]) yöntemini buldum. Dosya indirildiğinde, doğrudan varsayılan indirilenler klasörüne gider. basitçe çalıştırmak eklemek için:

(function(console){ 

    console.save = function(data, filename){ 

     if(!data) { 
      console.error('Console.save: No data') 
      return; 
     } 

     if(!filename) filename = 'console.json' 

     if(typeof data === "object"){ 
      data = JSON.stringify(data, undefined, 4) 
     } 

     var blob = new Blob([data], {type: 'text/json'}), 
      e = document.createEvent('MouseEvents'), 
      a = document.createElement('a') 

     a.download = filename 
     a.href = window.URL.createObjectURL(blob) 
     a.dataset.downloadurl = ['text/json', a.download, a.href].join(':') 
     e.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null) 
     a.dispatchEvent(e) 
    } 
})(console) 

Sonra şöyle veri ve dosya adında geçmesi, console.save (veri, [dosyaadı]) ve dosya oluşturulup indirilecek.

Kaynak: soru Ben uzatma geliştiriciler için basit bir çözüm sunmak istiyoruz google-chrome-uzantılı etiketlenmiş olduğundan

https://plus.google.com/+AddyOsmani/posts/jBS8CiNTESM

http://bgrins.github.io/devtools-snippets/#console-save

1

.

Öncelikle @ emil-Stenstrom tarafından sağlanan Sonra data:text/plain hile ile indirme-API kullanmak manifest.json

"permissions": [ 
    "downloads" 
] 

yılında izinlerine "indirmeleri" ekleyin.

var myString = localStorage.YOUR_VALUE; 
chrome.downloads.download({ 
    url: "data:text/plain," + myString, 
    filename: "data.txt", 
    conflictAction: "uniquify", // or "overwrite"/"prompt" 
    saveAs: false, // true gives save-as dialogue 
}, function(downloadId) { 
    console.log("Downloaded item with ID", downloadId); 
}); 

sadece data:text/json kullanmak sonra, JSON.stringify(localStorage.YOUR_DATA) ile nesne ya da dizi hazırlamak, JSON için adapte ve ben de indirmek için bir dosyaya benim yerel depolama metni kurtarmak istemişti .json

+0

Bu soru için çok gerekli bir güncelleme. – Xan

0

biten dosyayı değiştirmek için ve kod masaüstünde Mac, Safari, Chrome ve Firefox için çalışıyor. Ancak, iOS'ta Blob'u() herhangi bir yere Chrome veya Firefox ile kaydetmenin imkansız olduğunu düşünüyorum. Safari'de ilginç bir şekilde çalışıyor. Örneğin, metin dosyasını Wunderlist uygulamasına kaydedebilirim.

const fileDownloadButton = document.getElementById('save'); 
function localStorageToFile() { 
    const csv = JSON.stringify(localStorage['autosave']); 
    const csvAsBlob = new Blob([csv], {type: 'text/plain'}); 
    const fileNameToSaveAs = 'local-storage.txt'; 
    const downloadLink = document.getElementById('save'); 
    downloadLink.download = fileNameToSaveAs; 
    if (window.URL !== null) { 
     // Chrome allows the link to be clicked without actually adding it to the DOM 
     downloadLink.href = window.URL.createObjectURL(csvAsBlob); 
     downloadLink.target = `_blank`; 
    } else { 
     downloadLink.href = window.URL.createObjectURL(csvAsBlob); 
     downloadLink.target = `_blank`; 
     downloadLink.style.display = 'none'; 
     // add .download so works in Firefox desktop. 
     document.body.appendChild(downloadLink.download); 
    } 
    downloadLink.click(); 
} 
// file download button event listener 
fileDownloadButton.addEventListener('click', localStorageToFile);  
İlgili konular