我正在嘗試編寫一個允許用戶將圖片添加到數據庫的程序,但它失敗了。我將不勝感激,如果有人可以幫助我...我 文件Index.cshtml有以下代碼...MVC 3 - 圖片上傳失敗
<td>
@item.Picture1
<img alt="@Html.Encode(item.Picture1)" src='@(Url.Action(("Picture1")) +
ToString())' width="64" height="64" />
</td>
Create.cshtml文件看起來像這樣...
<div class="editor-field">
@Html.EditorFor(model => model.Picture1)
<input type="file" id="fileUpload" name="fileUpload" size="23"/>
@Html.ValidationMessage("Picture1", "*")
</div>
<p>
<input type="submit" value="Create" />
</p>
在控制器,用於創建,我有以下的代碼...
[HttpPost]
public ActionResult Create([Bind(Exclude = "SubProductCategoryID")] SubProductCategory2 Createsubcat2, FormCollection values)
{
if (ModelState.IsValid)
{
if (Request.Files.Count > 0)
{
Createsubcat2.Picture1 = (new FileHandler()).uploadedFileToByteArray((HttpPostedFileBase)Request.Files[0]);
}
db.AddToSubProductCategory2(Createsubcat2);
db.SaveChanges();
return RedirectToAction("/");
}
PopulateProductCategoryDropDownList(Createsubcat2.ProductCategoryID);
return View(Createsubcat2);
}
public FileResult Image(int id)
{
const string alternativePicturePath = @"/Content/question_mark.jpg";
SubProductCategory2 product = db.SubProductCategory2.Where(k => k.SubProductCategoryID == id).FirstOrDefault();
MemoryStream stream;
if (product != null && product.Picture1 != null)
{
stream = new MemoryStream(product.Picture1);
}
else // If product cannot be found or product doesn't have a picture
{
stream = new MemoryStream();
var path = Server.MapPath(alternativePicturePath);
var image = new System.Drawing.Bitmap(path);
image.Save(stream, System.Drawing.Imaging.ImageFormat.Jpeg);
stream.Seek(0, SeekOrigin.Begin);
}
return new FileStreamResult(stream, "image/jpeg");
}
FileHandler.cs
public class FileHandler
{
/// <summary>
/// Converts a HttpPostedFileBase into a byte array
/// </summary>
/// <param name="file"></param>
/// <returns></returns>
public byte[] uploadedFileToByteArray(HttpPostedFileBase file)
{
int nFileLen = file.ContentLength;
byte[] result = new byte[nFileLen];
file.InputStream.Read(result, 0, nFileLen);
return result;
}
在此先感謝。我正在使用http://blog-dotnet.com/category/ASPNET-MVC.aspx網站作爲參考。我在C#中使用VS 2010,ASP.NET 4.0,MVC 3。 SQL Server 2008R2。 SubProductCategory2表具有文件Picture1,圖像數據類型。
編輯: 實際工作更多的我有公衆的byte []圖片1 {獲得;組; }在其中一個類中。我現在得到的輸出是System.Byte [] System.Byte []。我該如何解決?
什麼失敗?你有代碼,但沒有任何描述你正在經歷的錯誤/問題 – 2011-03-15 15:37:31
它是如何失敗的?你有錯誤嗎? – 2011-03-15 15:38:22
運行應用程序時沒有錯誤。當我瀏覽以查找圖片,然後單擊創建時,頁面將返回索引,其中沒有圖片僅顯示用戶輸入的文本。 – DiscoDude 2011-03-15 16:31:18