Javascript 转换后将base64字符串发送到MVC控制器
在客户端,我允许用户上传一个图像,然后将其转换为base64图像。然后我想将其发送到控制器,然后控制器将重建图像,但我正在努力将base64字符串正确地传递给控制器 我不相信我这样做也是最好的 以下是HTML页面:Javascript 转换后将base64字符串发送到MVC控制器,javascript,asp.net-mvc,asp.net-mvc-4,Javascript,Asp.net Mvc,Asp.net Mvc 4,在客户端,我允许用户上传一个图像,然后将其转换为base64图像。然后我想将其发送到控制器,然后控制器将重建图像,但我正在努力将base64字符串正确地传递给控制器 我不相信我这样做也是最好的 以下是HTML页面: <form id="qrForm" action="" method="post" enctype="multipart/form-data"> <label class="btn btn-default btn-file btn-block btn-lg
<form id="qrForm" action="" method="post" enctype="multipart/form-data">
<label class="btn btn-default btn-file btn-block btn-lg">
<span class="glyphicon glyphicon-camera"></span>
Begin
<input type="file" accept="image/*;capture=camera" name="file" id="file" onchange="encodeImageFileAsURL();" style="display: none;">
</label>
</form>
<form id="base64Form" action="" method="post" enctype="multipart/form-data">
<input type="hidden" id="base64Img" name="base64Img" />
</form>
<script type="text/javascript">
function encodeImageFileAsURL()
{
var filesSelected = document.getElementById("file").files;
if (filesSelected.length > 0)
{
var fileToLoad = filesSelected[0];
var fileReader = new FileReader();
fileReader.onload = function (fileLoadedEvent)
{
var srcData = fileLoadedEvent.target.result; // <--- data: base64
var newImage = document.createElement('img');
newImage.src = srcData;
console.log("Converted Base64 version is " + newImage.outerHTML);
document.getElementById("base64Img").value = newImage.outerHTML;
document.forms["base64Form"].submit();
}
fileReader.readAsDataURL(fileToLoad);
}
}
</script>
提前谢谢。为什么要浪费cpu和更多带宽,而不是以base64而不是formdata发送?@unfinal如果只按原样发送图像文件会更好吗?我以为base64映像会占用更少的带宽?恰恰相反,base64的大小要大~3倍。。。在javascript中,由于字符串是utf16而非utf16,它将占用2倍的内存utf8@Endless这为我省去了很多麻烦-谢谢你的建议!另外,请看一看:为什么要浪费cpu和更多带宽,而不是以base64而不是formdata的形式发送它?@如果只按原样发送图像文件会更好吗?我以为base64映像会占用更少的带宽?恰恰相反,base64的大小要大~3倍。。。在javascript中,由于字符串是utf16而非utf16,它将占用2倍的内存utf8@Endless这为我省去了很多麻烦-谢谢你的建议!还可以看看这个:
public ActionResult Index()
{
return View();
}
[HttpPost]
public ActionResult Index(string base64Img)
{
if (base64Img.Length > 0)
{
// do something
}
}