有一个浏览器程序,允许用户下棋 - 移动棋子等,试图让用户直接从浏览器下载结果pgn(Content-Type:PGN)。
它与数据有关:URI?在某个地方有一些例子吗?
仅对现代浏览器感兴趣
答案 0 :(得分:2)
我不太确定我是否理解你的问题。你的意思是你生成PNG格式的图像,但浏览器不提供下载,而是直接显示图像?
如果是这样,解决方案是通过将适当的MIME类型设置为HTTP标题“内容类型”来指示要下载的文件。
在PHP中,你这样做:
header("Content-Type: application/force-download");
或
header("Content-Type: application/octet-stream");
当浏览器收到此MIME类型时,它不会尝试显示内容本身。
答案 1 :(得分:0)
您可以使用数据URI,但存在一些限制。 Here's an example,根据我的回答to an earlier question。你要注意的第一件事是你无法真正控制文件名,但除此之外它在Firefox和Chrome中运行正常,但是probably not so well in IE(我没试过)。
假设您已经可以将PGN生成为字符串,那么创建数据URI的代码非常简单:
function exportData(data, target) {
var exportLink = document.createElement('a');
exportLink.setAttribute('href', 'data:application/x-chess-pgn;base64,' + window.btoa(data));
exportLink.appendChild(document.createTextNode('sample.pgn'));
document.getElementById(target).appendChild(exportLink);
}
只需使用您生成的任何内容设置数据,并设置一个元素,以便在创建链接后保留该链接。
将来我们会遇到better solutions这类问题,但目前还没有浏览器支持。