Javascript 将画布数据URL保存到用户';s文件系统
好的,我有一个MVC应用程序,我在其中创建一个画布图像,并通过canvas.toDataURL(“image/png”)获取数据url。我想做的是将其保存到用户的文件系统中 我试着用javascript来实现它,方法是: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); 但这只给了我一个名为
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";
}
});