gpt4 book ai didi

javascript - 使用 Node.js 询问用户在哪里保存文件

转载 作者:数据小太阳 更新时间:2023-10-29 03:57:54 26 4
gpt4 key购买 nike

我正在使用 node-webkit 创建一个应用程序,所以有很多 javascript。我已经编写了一个 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但这不是我想要的,或者我无法使其正常工作。

最佳答案

Wiki 中的文件对话框页面提到了一个 save dialog file input

nwsaveas will open a save as dialog which let user enter the path of a file, and it's possible to select a non-exist file which is different with the default file input tag:

您可以在模态等自定义对话框中使用它来查询用户的输入。

基于您提供的代码的非常基本的示例:

<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>

关于javascript - 使用 Node.js 询问用户在哪里保存文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17558126/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com