0

好的,所以,我有一个 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.NET MVC。有没有人有一个简单的好方法让我做到这一点?

4

1 回答 1

0

这就是我最终得到的结果:

帖子图片:

[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";
    }
});
于 2013-04-12T17:01:16.403 回答