2013-07-09 6 views
6

के साथ फ़ाइल को सहेजना है, मैं नोड-वेबकिट का उपयोग करके एक ऐप बना रहा हूं, इसलिए बहुत सारी जावास्क्रिप्ट है। मैंने एक node.js फ़ंक्शन लिखा है जो एक स्क्रीन शॉट लेगा और इसे डिस्क पर सहेज लेगा, हालांकि, यह इसे प्रोजेक्ट रूट डीआईआर में सहेजता है और मैं उपयोगकर्ता को एक सेव स्थान चुनने के लिए संकेत देना चाहता हूं, लेकिन मुझे कोई नहीं मिल रहा है एक सहेजें फ़ाइल संवाद बनाने के लिए रास्ता। वर्तमान कोड:उपयोगकर्ता से पूछें कि Node.js

screen_shot.js:

var fs = require('fs'); 
exports.buildFile = function(name, value) { 
    var img = new Buffer(value, encoding='base64'); 
    fs.writeFile(name, img, function(err) { 
     if(err) { 
      console.log(err); 
     } else { 
      console.log("The file was saved!"); 
     } 
    }); 
}; 

index.html:

... 
    <script> 
     var sc= require('screen_shot'); 

     function wait() { 
      $('#close-popup').click(); 
      setTimeout(function() {screen_shot()}, 10); 
     } 

     function screen_shot() { 
      html2canvas($('body'), { 
       onrendered: function(canvas) { 
        var img = canvas.toDataURL("image/png").split(',')[1]; 
        var decodedImg = window.atob(img); 
        sc.buildFile("sc.png", img); 
       } 
      }); 
     } 
    </script> 
... 

<a href="#" onclick="wait();" data-role="button" data-theme="j">Screen shot</a> 

इंतजार समारोह सिर्फ पॉपअप मैं स्क्रीनशॉट से पहले बंद करने के लिए समय का उपयोग कर रहा देने के लिए किया जाता है लिया जाता है ।

मैं node-webkit file dialog doc पढ़ रहा हूं लेकिन यह वही नहीं है जिसे मैं ढूंढ रहा हूं या मैं इसे ठीक से काम नहीं कर सकता।

+0

यह http://stackoverflow.com/questions/5612373/javascript-saveas-dialog – Seano666

+2

@ Seano666 में मदद कर सकता है: नहीं, ओपी एक अलग वातावरण में काम कर रहा है – Bergi

उत्तर

0

विकी में फ़ाइल संवाद पृष्ठ का उल्लेख एक save dialog file input

nwsaveas एक संवाद है जो उपयोगकर्ता किसी फ़ाइल का पथ दर्ज जाने के रूप में बचाने के लिए, और यह एक गैर मौजूद फ़ाइल जो अलग है चुनना संभव है खुल जाएगा डिफ़ॉल्ट फ़ाइल इनपुट टैग के साथ:

आप उस इनपुट के लिए उपयोगकर्ता से पूछताछ करने के लिए एक मोडल जैसे कस्टम संवाद में इसका उपयोग कर सकते हैं।

बहुत बुनियादी उदाहरण आपके प्रदान की कोड के आधार पर:

<script> 
    var fs = require('fs'); 

    var buildFile = function(name, value) { 
     var img = new Buffer(value, 'base64'); 
     fs.writeFile(name, img, function(err) { 
      if(err) { 
       console.log(err); 
      } else { 
       console.log("The file was saved!"); 
      } 
     }); 
    } 

    function wait() { 
     $('#close-popup').click(); 
     setTimeout(function() {screen_shot()}, 10); 
    } 

    function screen_shot() { 
     html2canvas($('body'), { 
      onrendered: function(canvas) { 
       var img = canvas.toDataURL("image/png").split(',')[1]; 
       var decodedImg = window.atob(img); 
       query_for_save_path(function (save_path) { 
       buildFile(save_path, img); 
       alert('Screenshot saved to: ' + save_path); 
       }); 
      } 
     }); 
    } 

    function query_for_save_path(cb) { 
     $('#dialog').show(); 
     $('#dialog input').one('change', function (event) { 
     cb($(this).val()); 
     }); 
    } 
</script> 

<a href="#" onclick="wait();" data-role="button" data-theme="j">Screen shot</a> 

<div id="dialog" style="display:none;"> 
    Choose a path to save your shot: 
    <input type="file" nwsaveas /> 
</div> 
1

एक और उदाहरण यहाँ http://9ijy.net/blog/view/6, बस 3 चरणों फ़ाइल जहां कभी आप की तरह बचाने के लिए। उम्मीद है कि यह वही जवाब है जो आप चाहते हैं, और विकी में फ़ाइल संवाद पृष्ठ का उल्लेख है save dialog file input बहुत उपयोगी

+0

लिंक काम नहीं कर रहा है –

संबंधित मुद्दे