我想知道如何在Firefox中调用文件另存为命令(当您右键单击图像并保存它时得到的)使用JS保存图像(或者如果有其他我可以使用的东西,如果您向我指出这个方向,我会很感激)。我正在寻找如何打开"另存为"菜单并预填充文件名字段的示例…我一直在拼命地找,但什么也没找到。在我的搜索中,我看到您不能直接将文件保存到磁盘,但是不可能调用另存为函数吗?任何建议将非常感激!
编辑:我不打算让所有人都能使用这些代码,java脚本是客户端,我只是写了一个小脚本让保存照片更容易命名。
——
不,你不能这样做,你真的是在试图找到一种不包含互联网和人们与内容交互方式的解决方案。你要做的是从Javascript调用操作系统操作。如果有可能,我不认为这是可能的,这将是一个非常糟糕的解决方案。想想所有使用Firefox的不同操作系统吧。如果你找到了Windows 7的解决方案,那么运行Firefox的苹果Mac电脑呢?
你应该考虑的是用户决定是否将某些内容保存到他们的计算机,而不是应用程序的程序员。提供到文件的链接,大多数用户都知道如何右键单击链接并选择另存为。添加帮助提示,并解释如何做。
要给文件一个特定的名称,甚至在用户点击或采取某种行动时启动自动下载,您可以从服务器创建一个响应,该响应是PDF,Excel,Jpeg,Doc,Docx或许多其他文件类型。服务器可以在内存中加载文件,并将其作为响应发送,在响应中包含适当的头信息。
例如,要为用户下载时的文件设置一个特定的名称,您可以设置您的响应头如下:header('Content-Disposition: attachment; filename="downloaded.pdf"');
您可以使用锚元素的download
属性来指定要下载的链接。注意,这不是在所有浏览器中实现的,Chrome, Firefox和Opera目前支持它
https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElementHTMLAnchorElement.download
DOMString是否表示链接资源用于下载,而不是显示在浏览器。该值表示建议的文件名称。如果name不是底层操作系统的有效文件名,浏览器将适应它。URL类型,格式为http:、file:、data:或偶数
var canvas = document.getElementById('canvas');
var ctx = canvas.getContext('2d');
ctx.fillRect(25,25,100,100);
ctx.clearRect(45,45,60,60);
ctx.strokeRect(50,50,50,50);
var link = document.getElementById("link");
//Set href to the data url that you want downloaded
link.href = "http://placehold.it/350x350";
//set download to the default filename you want to use
link.download = "image.png";
<canvas id="canvas" width="150" height="150"></canvas>
<a href="#" id="link">Click to download</a>
你也可以为一个文件指定一个常规的url,但是注意,如果服务器发送一个文件名头:Content-Disposition ... filename...
,它将覆盖你在下载属性中的任何内容。