Tôi đang cố gắng thêm điều khiển tải tệp lên mẫu ASP.NET MVC 2 của mình nhưng sau khi tôi chọn một jpg và nhấp vào Lưu , nó cung cấp cho các lỗi sau:Lỗi tải lên tệp ASP.NET MVC - "Dữ liệu nhập không phải là chuỗi Base-64 hợp lệ"
Đầu vào không phải là chuỗi Base-64 hợp lệ vì nó chứa ký tự không phải là 64 cơ sở, nhiều hơn hai ký tự đệm hoặc ký tự khoảng trống trắng giữa các ký tự đệm.
Dưới đây là quan điểm:
<% using (Html.BeginForm("Save", "Developers", FormMethod.Post, new {enctype = "multipart/form-data"})) { %>
<%: Html.ValidationSummary(true) %>
<fieldset>
<legend>Fields</legend>
<div class="editor-label">
Login Name
</div>
<div class="editor-field">
<%: Html.TextBoxFor(model => model.LoginName) %>
<%: Html.ValidationMessageFor(model => model.LoginName) %>
</div>
<div class="editor-label">
Password
</div>
<div class="editor-field">
<%: Html.Password("Password") %>
<%: Html.ValidationMessageFor(model => model.Password) %>
</div>
<div class="editor-label">
First Name
</div>
<div class="editor-field">
<%: Html.TextBoxFor(model => model.FirstName) %>
<%: Html.ValidationMessageFor(model => model.FirstName) %>
</div>
<div class="editor-label">
Last Name
</div>
<div class="editor-field">
<%: Html.TextBoxFor(model => model.LastName) %>
<%: Html.ValidationMessageFor(model => model.LastName) %>
</div>
<div class="editor-label">
Photo
</div>
<div class="editor-field">
<input id="Photo" name="Photo" type="file" />
</div>
<p>
<%: Html.Hidden("DeveloperID") %>
<%: Html.Hidden("CreateDate") %>
<input type="submit" value="Save" />
</p>
</fieldset>
<% } %>
Và bộ điều khiển:
//POST: /Secure/Developers/Save/
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Save(Developer developer)
{
//get profile photo.
var upload = Request.Files["Photo"];
if (upload.ContentLength > 0)
{
string savedFileName = Path.Combine(
ConfigurationManager.AppSettings["FileUploadDirectory"],
"Developer_" + developer.FirstName + "_" + developer.LastName + ".jpg");
upload.SaveAs(savedFileName);
}
developer.UpdateDate = DateTime.Now;
if (developer.DeveloperID == 0)
{//inserting new developer.
DataContext.DeveloperData.Insert(developer);
}
else
{//attaching existing developer.
DataContext.DeveloperData.Attach(developer);
}
//save changes.
DataContext.SaveChanges();
//redirect to developer list.
return RedirectToAction("Index");
}
Cảm ơn, Justin
Đó không phải là một vấn đề vì lỗi được ném trước khi nó đi vào hành động điều khiển để nó không liên quan đến việc lưu vào db. Tôi đang thua lỗ b/c Tôi nghĩ rằng lỗi này có liên quan đến việc không có enctype = "multipart/form-data" và tôi rõ ràng có ... – Justin
Thực ra bạn đã cho tôi những gì tôi cần để khắc phục. Bạn không có thuộc tính Photo, và tôi có một thuộc tính [] Photo byte để nó cố gắng gán tệp tải lên nó, điều này rõ ràng không hoạt động. Tôi đổi tên file ProfilePhoto và sau đó nó hoạt động. – Justin