2012-12-10 23 views
5

yapmam verilen 2011.Canvas2Image veya HTML5 indirme özniteliğine çapraz tarayıcı alternatifi?

yanıtlarından this soruda açıklandığı aynı sorun haline çalıştırıyorum bir pattern generator geliştirirken gerçekten bir çapraz tarayıcı, istemci tarafı çözüm sunuyoruz.

İhracat Desen düğmesini tıklayarak zaman aşağıdaki çözümlerden birini kabul eder: Dosya bir .png uzantısı ile kaydedilir sağlarken canvas2image aracılığıyla bir indirme Tetikleme

  1. (olursa olsun ne dosya Canvas2Image.saveAsPNG() metod ile elde edilen görüntü ile veya,

  2. Ekran bir eklendi (KendoUI ürünü tercihen)) olarak ayarlanır ve kullanıcı tercihen kullanılmaması nedeniyle kaydetmek let sağ tıklama çözümünü lame, ancak bir bağlantı veya bir düğme ile. Şu anda kullanarak düğme için

HTML: indir tetikler

<button id="downloadbtn" onClick="javascript:downloadImage()" data-role="button" class="k-button">Export Pattern</button> 

Fonksiyon:

function downloadImage() { 

    //...extra code omitted 
    var oCanvas = document.getElementById("my_canvas"); 
    oCanvas.width = $("#pixels-h").val(); 
    oCanvas.height = $("#pixels-v").val(); 
    Canvas2Image.saveAsPNG(oCanvas); 
    //...extra code omitted  

    } 

dosya Krom Version 23.0 ile OSX altında ince indirmek gibi görünüyor. 1271.95 ve Safari Versiyon 5.1.7 (6534.57.2).

OSX için Firefox 17.0.1 altında indirdikten sonra dosyayı açamayan birinin raporu var. Görünüşe göre indirme bir .part dosyası oluşturur.

En büyük sorun, bir dosya uzantısı olmadan bu yöntemin güvenilir olabileceğinden şüphe duymaktır.

Bir istemci tarafı akım tarayıcılar ile mümkün olan en geniş uyumluluk tek çözüm arıyorum, bu yüzden şu anda sadece Chrome'da desteklenir gibi HTML5 download nitelik hile yapmaz sanırım.

Herhangi bir yaratıcı çözüm?

+0

iOS 8/OSX dahil cari tarayıcılar için daha iyi çözümler olup olmadığını ping istiyorum? – andig

cevap

2

Aynı konuyla karşılaştım. Temel sorun, dosya adının başlığa eklenmesinin gerekmesidir, ancak canvas2images document.location.href = strData kullanır ve strData başlık içermez. Yani cevap, canvas2image ihtiyacımız olan özelliği desteklemiyor ve başka bir çözümü denememiz gerekecek. İki yıl geçti gibi (örneğin belki FileSaver.js ve tuval-toBlob.js)

http://eligrey.com/demos/FileSaver.js/

+0

Teşekkürler! FileSaver, Github'daki desteklenen tarayıcılara bakmakla birlikte Safari'nin hiçbir sürümünün dosya isimlerini desteklemediği görülüyor. Bu, bir PNG uzantısının Safari'de mümkün olmayacağı anlamına mı geliyor? – HappyTorso

+0

Safari'de işe yarayıp yaramadığını bilmiyorum, bunu denemek ve öğrenmek zarar vermez. –

+0

@EricHartford değil. Ne masaüstünde ne de talihsiz, bu çok talihsiz bir şey. FileSaver'i kullanmayı düşünüyorum.Birincil çözüm olarak js'yi ve bir API ile yedeklemeyi, ya da HTTP Header'ı indirmeyi tetikleyecek ya da geçirilen base64 dizesine dayalı bir görüntüyü yükleyecek ve daha sonra istemci tarafına url ile yanıt verecek. –

İlgili konular