I am not 100% sure what the end goals are. But the answer below explains how you can send the original base64 image string to the server and save it. I tested it with a base64 string generated from a small image (size 22 KB) and it worked.
- FormData
, , file
. , processData
contentType
ajax FormData.
var file = document.getElementById("base64image").src;
var formdata = new FormData();
formdata.append("base64image", file);
$.ajax({
url: "@Url.Action("SaveImage")",
type: "POST",
data: formdata,
processData: false,
contentType: false
});
, 64- , string
. formdata (base64Image
). base64 . data:image/png;base64,
, , .
, , 21 ( 64 ), Content/Images/
.
[HttpPost]
public void SaveImage(string base64image)
{
if (string.IsNullOrEmpty(base64image))
return;
var t = base64image.Substring(22);
byte[] bytes = Convert.FromBase64String(t);
Image image;
using (MemoryStream ms = new MemoryStream(bytes))
{
image = Image.FromStream(ms);
}
var randomFileName = Guid.NewGuid().ToString().Substring(0, 4) + ".png";
var fullPath = Path.Combine(Server.MapPath("~/Content/Images/"), randomFileName);
image.Save(fullPath, System.Drawing.Imaging.ImageFormat.Png);
}
100%, base64 . , , , , Image . ( )