我需要有关vb.net中mvc应用程序的帮助。一般而言,我需要通过视图接收图像并使其在控制器上工作。我需要这样做将图像转换为字节数组并将其保存到oracle数据库。所以我的想法是获取图像并在控制器中将其转换为字节数组,或者可能有一些方法将图像作为字节数组获取并将该数组传递给控制器以将其保存到数据库中。
类似于我的观点:
<div class="span11">
<div class="span4" id="depnac">
@Html.LabelFor(Function(m) m.DepNacPER)
@Html.DropDownListFor(Function(m) m.DepNacPER, Model.DepNacPER, New With {.class = "form-control"})
</div>
这是我的模特:
<Display(Name:="Region of birth")>
<Required(ErrorMessage:="you must select a option")>
Property DepNacPER As SelectList
答案 0 :(得分:0)
我现在正在使用上传图片的ASP.NET核心应用程序。图像通过请求作为Stream
传递给控制器。然后我从Image
创建一个Stream
对象,但您可以直接从中读取数据。也就是说,您可能想尝试创建一个Image
对象来确认数据是否代表有效图像。
以下是该视图脚本中的一些相关代码:
function uploadImage()
{
// This is a file upload control in a hidden div.
var image = $("#imageFile");
if (image[0].files.length > 0)
{
var formData = new FormData();
formData.append(image[0].files[0].name, image[0].files[0]);
var xhr = new XMLHttpRequest();
xhr.open("POST", "@Url.Content("~/events/uploadimage")");
xhr.send(formData);
xhr.onreadystatechange = function ()
{
if (xhr.readyState === 4 && xhr.status === 200)
{
var response = JSON.parse(xhr.responseText);
if (response.saveSuccessful)
{
// ...
} else
{
window.location.replace("@Url.Content("~/error")");
}
}
}
xhr.onerror = function(err, result)
{
alert("Error: " + err.responseText);
}
}
}
我正在使用一些jQuery来代替那些代码,但这个代码还有很长的路要走但是还没有那么远。
以下是该行动的一些相关代码:
[HttpPost]
public IActionResult UploadImage()
{
var requestForm = Request.Form;
StringValues tempImageFileNames;
string tempImageFileName = null;
string imageUrl = null;
var saveSuccessful = true;
var requestFiles = requestForm.Files;
if (requestFiles.Count > 0)
{
// A file has been uploaded.
var file = requestFiles[0];
using (var stream = file.OpenReadStream())
{
try
{
using (var originalImage = System.Drawing.Image.FromStream(stream))
{
// Do whatever you like with the Image here.
}
}
catch (Exception)
{
saveSuccessful = false;
}
}
}
if (saveSuccessful)
{
return Json(new {saveSuccessful, tempImageFileName, imageUrl});
}
else
{
return Json(new {saveSuccessful});
}
}
抱歉,起初我没有想到你在VB代码之后,这是C#。希望你仍然可以得到这个想法,如果有人不喜欢这个答案,我会接受这个打击。