2015-10-20 1 views
6

के साथ पीएनजी फ़ाइलों को सहेजना मैं अपने एक्सप्रेस ऐप से पीएनजी फ़ाइलों को डाउनलोड करने के लिए FileSaver.js का उपयोग करने की कोशिश कर रहा हूं। फ़ाइलों को बेस 64 एन्कोडेड तारों के रूप में भेजा जा रहा है, लेकिन जब मैं उन्हें बचाने के लिए FileSaver.js का उपयोग करने का प्रयास करता हूं तो वे दूषित हो जाते हैं।FileSaver.js

इस तरह से मैं उन्हें बचाने के लिए कोशिश कर रहा हूँ है:

var blob = new Blob([base64encodedString], {type: "data:image/png;base64"}); 
saveAs(blob, "image.png"); 

मैं भी छवियों को बचाने की इस पद्धति का उपयोग किया है, लेकिन अगर base64encodedString बहुत बड़ा हो जाता यह काम नहीं करता:

var download = document.createElement('a'); 
download.href = 'data:image/png;base64,' + base64encodedString; 
download.download = 'reddot.png'; 
download.click(); 

मैं FileSaver.js के साथ क्या गलत कर रहा हूं?

+0

बेस 64 स्ट्रिंग की जांच करें और सुनिश्चित करें कि यह छवि प्रदर्शित करता है, यदि आप की आवश्यकता है तो आप इसके लिए ऑनलाइन बेस 64 कनवर्टर का उपयोग कर सकते हैं। फ़ाइल सेवर को भेजने से पहले यह दूषित हो सकता है ताकि जांचें कि यह पहले मान्य है। –

+0

@ जोशलिडक्स मैं इसे ऑनलाइन उपकरण का उपयोग करके परिवर्तित करने की कोशिश कर रहा हूं, लेकिन मुझे कोई सफलता नहीं मिली है, लेकिन जब मैं (छोटी) छवियों को डाउनलोड करने के लिए दूसरी विधि का उपयोग करता हूं तो यह ब्लॉब विधि के लिए भी काम करना चाहिए। – martin

उत्तर

3

मुझे पता चला है कि आप इसे पहले कैनवास में लिखना चाहते हैं। एक ब्लॉब में

Click Here

base_image = new Image(); 
base_image.src = Base64String 

कैनवास

var canvas = document.getElementById('YourCanvas'); 
context = canvas.getContext('2d'); 
// Draw image within 
context.drawImage(base_image, 0,0); 

तो आप FileSaver.js उपयोग कर सकते हैं यह

को बचाने के लिए और अंत में बचाने के यह

x_canvas.toBlob(function(blob) { 
saveAs(blob, "screenshot.png"); 
}, "image/png"); 

इस पोस्ट में Click Here For Fiddle