У меня есть этот код в View:Сохранение изображения в базе данных с ASP.NET MVC
<div class="form-group">
<label for="imageFile">Image</label>
<input type="image" name="imageFile" class="file-loading form-control input-files" accept=".png,.jpg,.jpeg,.gif,.tif" />
@Html.ValidationMessageFor(model => model.image)
</div>
Контроллер:
public ActionResult PostIdea(PostIdeaViewModel model, HttpPostedFileBase imageFile) {
if (ModelState.IsValid) {
var newProject = db.Projects.Create();
if (imageFile != null && imageFile.ContentLength > 0) {
newProject.image = new byte[imageFile.ContentLength];
imageFile.InputStream.Read(newProject.image, 0, imageFile.ContentLength);
}
}
}
Модель:
[Display(Name = "Image")]
public HttpPostedFileBase image { get; set; }
Все кажется мне правильным, но изображение, полученное контроллером, равно нулю. Что-то не так с кодом?
Edit: с помощью ENCTYPE = "многочастных/форм-данных" и @ Html.TextBoxFor (м => m.image, новый {типа = "файл"}) работало для меня.
Что поиска для "HttpPostedFileBase нулевой" выход? Как выглядит ваш код формы? – CodeCaster
На основе вашей модели вы должны иметь '@ Html.TextBoxFor (m => m.image, new {type =" file "})' –
@StephenMuecke с использованием Html.TextBoxFor дает это исключение: вход недействителен Строка Base-64, поскольку она содержит не-базовый символ 64, более двух пробельных символов или недопустимый символ среди символов заполнения. Я не мог ее решить, поэтому попробовал другую оценку. – Resham