Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/464.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 转换后将base64字符串发送到MVC控制器_Javascript_Asp.net Mvc_Asp.net Mvc 4 - Fatal编程技术网

Javascript 转换后将base64字符串发送到MVC控制器

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

在客户端,我允许用户上传一个图像,然后将其转换为base64图像。然后我想将其发送到控制器,然后控制器将重建图像,但我正在努力将base64字符串正确地传递给控制器

我不相信我这样做也是最好的

以下是HTML页面:

<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
    }
}