Web tabanlı bir uygulama üzerinde çalışıyorum ve bu da dengesiz İnternet bağlantısı olan ortamlarda kullanılabilecek. HTML5 yerel depolamasını (aslında jQuery eklentisi jStorage) kullanacak bir HTML5 çevrimdışı uygulaması olarak uyguluyorum. Bu, veri girişine dayalı bir uygulama olduğundan, çevrimdışıyken oluşturulmuş tüm yeni girişler yerel depolama alanına kaydedilir ve Internet bağlantısı yeniden kurulduğunda daha sonra sunucuyla senkronize edilir. Neredeyse çalışmayı başardım ama şimdi kullanıcıların bir veri girişi sunumu ile birlikte bir görüntü yüklemeye ihtiyaç duyacağı bir şartla karşı karşıya kalıyorum.
Dosya yüklemeleri ve çevrimdışı erişim hakkında bilgi veren bu HTML5 API spesifikasyonunu - http://www.w3.org/TR/file-upload/ buldum. Bu konuya çok girmeden önce - benim için bunu kolaylaştıracak olan bu işlevselliğin etrafında herhangi bir paket var mı?
Ayrıca bu makaleyi - http://www.theuniversalfather.com/tr-tr-tr-tr-tr-tr-trecek bir TwitPic API kullanan http://hacks.mozilla.org/2010/02/an-html5-offline-image-editor-and-uploader-application/ ve buradaki insanlardan profesyonel geri bildirim almak istedim.
Teşekkür ederiz!HTML5 çevrimdışı uygulamalarda dosya yükleme
cevap
Bunu sorduğumdan beri bir süredir olduğunu biliyorum, ancak hala bu sorunun desteklendiğini ve desteklendiğini görüyorum, bu yüzden bunu nasıl çözdüğümü paylaşacağımı anladım. Benim durumumda dosyalar o kadar büyük değil, ben de MIME'yi kodlamaya karar verdim ve daha sonra stringi HTML5 localStorage'da sakladım. Bir çekicilik olarak çalışır.
Daha fazla ayrıntı kullanışlı olurdu. [Bu SO sorusu] (http://stackoverflow.com/questions/19183180/how-to-upload-an-image-save-it-to-localstorage-and-then-display-it-on-the-next) görüntüleri kapsar, ancak bu cevapta kabaca anlatılanı yapmanın iyi bir örneği olarak hizmet etmelidir. –
Merhaba @insiderpro, bu sayede görüntüleri localstorage'a kaydediyorsunuz ve daha sonra sunucuya nasıl aktarıyorsunuz? Base64 olarak mı? 10x – Bill
@Bill, evet, onları base64 dizeleri olarak sunucuya itiyorum. –
Ben HTML5 dosyası API bazı süre önce bir makale yazmıştı - avans kontrolleri için https://github.com/mailru/FileAPI-http://speckyboy.com/2012/10/30/getting-to-grips-with-the-html5-file-api-2/
Ayrıca GitHub repo bakın.
localStorage
doğru yanıtı burada düşünmüyorum çünkü localStorage
yalnızca dizeleri kaydeder ve 5 megabayt depolama sınırına sahiptir. http://hacks.mozilla.org/2012/02/storing-images-and-files-in-indexeddb/: http://hacks.mozilla.org/2012/02/saving-images-and-files-in-localstorage/
indexedDB
dosyalarını depolamak için daha iyi bir yer olabilir:
Sana localStorage
ısrar ederseniz http://pouchdb.com
gibi bir şey Fakat, ardından Mozilla Hacks localStorage
içinde saklanması görüntüleri hakkında bir makale vardır önermek
Seni anladığımdan emin değilim. Bir dosyayı çevrimdışı bir sunucuya yükleyemezsiniz. Dönemi. Bağladığınız demo, dosya üzerinde tutulmalı ve bir bağlantı beklemeli, ancak çevrimdışında dolaşmanın sihirli bir yolu yok. –
@RaymondCamden - tam olarak aradığım şey - bağlantıyı tekrar elde edene kadar dosyayı (veya içeriğini) bir yerde tut. Her zaman için bağlantıya güvenemeyen bir "zaman zaman bağlı" uygulaması yazıyorum. HTML5 yerel depolama alanındaki yeniden oluşturulmamış kayıtları 'önbelleğe alır ve bağlantı kullanılabilir olduğunda bunları sunucuyla senkronize eder. Sadece bunun dosyaların nasıl yapılacağını merak ediyordum. –