How can I display a Save As dialog in an Electron App?

前端 未结 3 2491
野趣味
野趣味 2021-02-19 04:34

I am writing a NodeJS Electron App to be distributed on all platforms. I have a download button that I would like to pop open a Save As dialog with the file being provided from

3条回答
  •  死守一世寂寞
    2021-02-19 05:07

    On the HTML button:

    
    

    In your javascript file:

    // Include in the render side
    var elerem = require('electron').remote;
    var dialog = elerem.dialog;
    var app = elerem.app;
    
    var http = require('http');
    var fs = require('fs');
    var path = require('path');
    
    
    function myUrlSaveAs(remoteUrl){
        // app.getPath("desktop")       // User's Desktop folder
        // app.getPath("documents")     // User's "My Documents" folder
        // app.getPath("downloads")     // User's Downloads folder
    
        var toLocalPath = path.resolve(app.getPath("desktop"), path.basename(remoteUrl) 
    
        var userChosenPath = dialog.showSaveDialog({ defaultPath: toLocalPath });
    
        if(userChosenPath){
            download (remoteUrl, userChosenPath, myUrlSaveAsComplete)
        }
    
    
    }
    
    function myUrlSaveAsComplete(err){
        alert("done");
    }
    
    
    function download (url, dest, cb) {
        var file = fs.createWriteStream(dest);
        var request = http.get(url, function(response) {
            response.pipe(file);
            file.on('finish', function() {
                file.close(cb); // close() is async, call cb after close completes.
            });
        }).on('error', function(err) { // Handle errors
            fs.unlink(dest); // Delete the file async. (But we don't check the result)
            if (cb) cb(err.message);
        });
    };
    

提交回复
热议问题