Javascript 将画布数据URL保存到用户';s文件系统

Javascript 将画布数据URL保存到用户';s文件系统,javascript,asp.net-mvc,html5-canvas,Javascript,Asp.net Mvc,Html5 Canvas,好的,我有一个MVC应用程序,我在其中创建一个画布图像,并通过canvas.toDataURL(“image/png”)获取数据url。我想做的是将其保存到用户的文件系统中 我试着用javascript来实现它,方法是: var saveUrl = canvas.toDataURL("image/png"); saveUrl = saveUrl.replace("image/png", "application/octet"); window.open(saveUrl); 但这只给了我一个名为

好的,我有一个MVC应用程序,我在其中创建一个画布图像,并通过canvas.toDataURL(“image/png”)获取数据url。我想做的是将其保存到用户的文件系统中

我试着用javascript来实现它,方法是:

var saveUrl = canvas.toDataURL("image/png");
saveUrl = saveUrl.replace("image/png", "application/octet");
window.open(saveUrl);
但这只给了我一个名为
download
的文件,没有任何扩展名或任何东西。我想获得“保存”对话框,给文件一个类型和名称,然后将其保存到用户的光盘上


所以我想我可以把数据发布到服务器上,然后用响应头告诉浏览器我正试图为它保存一个图像,但我找不到一个好方法。我正在使用ASP.NETMVC。有谁能给我一个简单易行的方法吗?

以下是我的结论:

张贴图片:

[HttpPost]
public void PostImageForPrinting(string dataUrl)
{
    SomePersistentObject.CurrentDataURL = dataUrl;
}
服务形象:

public ActionResult PrintMission()
{
    var url =
            SomePersistentObject.CurrentDataURL.Substring(SomePersistentObject.CurrentDataURL.IndexOf(",") + 1);
    var image = Convert.FromBase64String(url);
    return base.File(image, "image/png", "mission.png");
}
客户端:

var saveUrl = canvas.toDataURL("image/png");
var jsonString = JSON.stringify({ dataUrl: saveUrl });
$.ajax({
    url: "/Home/PostImageForPrinting",
    contentType: "application/json",
    type: "POST",
    data: jsonString,
    success: function (result) {
        window.location.href = "/Home/PrintMission";
    }
});