我想从视图中将base64图像发送到控制器 这是我的观点代码
@using (Html.BeginForm("Index", "Home", FormMethod.Post))
{
<img width="60" height="60" alt="" src="data:image/jpeg;base64,....."/>
@Html.TextArea("resultText")
<input type="submit" style="margin-left:40px;cursor:pointer;" id="l" value="Envoyer"/>
}
在我的控制器中,我想在争论中得到图像 这是控制器的代码
public ActionResult Index(HttpPostedFileBase imageFile)
{
//Conversion
if (imageFile!= null && imageFile.ContentLength > 0)
{
// for now just fail hard if there's any error however in a propper app I would expect a full demo.
using (var engine = new TesseractEngine(Server.MapPath(@"./tessdata"), "eng", EngineMode.Default))
{
// have to load Pix via a bitmap since Pix doesn't support loading a stream.
using (var image = new System.Drawing.Bitmap(imageFile.InputStream))
{
using (var pix = PixConverter.ToPix(image))
{
using (var page = engine.Process(pix))
{
//meanConfidenceLabel.InnerText = String.Format("{0:P}", page.GetMeanConfidence());
//ViewBag.meanConfidenceLabel = String.Format("{0:P}", page.GetMeanConfidence());
ViewBag.resultText = page.GetText();
}
}
}
}
}
return View();
}
上面的方法接受了参数中的上传图像,但我希望有一个base64图像。 我通过传递src的值来尝试将其作为字符串,但它没有工作。
答案 0 :(得分:2)
我已将此代码添加到我的控制器中并且有效
string imageDataParsed = imageFile.Substring(imageFile.IndexOf(',') + 1);
byte[] imageBytes = Convert.FromBase64String(imageDataParsed);
var imageStream = new MemoryStream(imageBytes, false);`
答案 1 :(得分:0)
我会将此视为尝试将任何其他字符串值发布到控制器操作。首先,您需要将图像数据放入表单字段中,以便使用以下格式发布:
<input type="hidden" name="imageData" value="data:image/jpeg;base64,....."/>
然后,您需要更新您的操作签名以捕获新字段:
public ActionResult Index(string imageData)
{
...
}