[英]How to use FILESTREAM in MVC 5 and EF6
這可能是一個愚蠢的問題,但是我對FileStream的使用感到困惑。
起初我以為FileStream只是一個System.IO實現,用於讀取和保存文件,但是還有用於MSSQL或數據庫存儲的FILESTREAM。
https://msdn.microsoft.com/zh-CN/library/bb933993%28v=sql.100%29.aspx
我的問題是我想在我的應用程序上實現FILESTREAM,因為我只是要存儲配置文件圖片,但是我沒有得到的是實現部分。
沒有關於如何在實體框架中使用它的示例或提及,例如要使用的文件類型或我是否需要安裝nuget。 如果我搜索FileStream的實現,我得到的是System.IO,該文件沒有用於保存在數據庫中的任何引用,因為它用於文件系統
我感到很困惑。 請幫忙。
SQL Server FileStream似乎是一種過度工程解決方案,僅用於將用戶頭像保留在您的服務器上。 您可以輕松地將化身作為文件存儲在某些特定文件夾中,並在化身參考表中具有相應的記錄來保留文件路徑,或將化身存儲為化身表中的VARBINARY
字段。
在我看來,將化身存儲為文件似乎是一個更直接的解決方案,因為稍后您可以在某些<img/>
中添加文件的網址,以顯示化身。
至於其余的,我建議如下:
1)在您的MVC視圖中,請引用類似的模型
public class AvatarModel
{
public int UserId { get; set; }
public HttpPostedFileBase AvatarFile { get; set; }
}
2)使用以下語句啟動您的頭像視圖
using (
Html.BeginForm("Avatar", "UserManagement", FormMethod.Post, FormMethod.Post, new { enctype = "multipart/form-data" } )
)
3)在視圖中定義輸入並提交按鈕
<input type="hidden" id="UserId" value="@Model.UserId" />
<input type="file" id="AvatarFile" />
<button type="submit"/>
4)在您的UserManagement控制器中實現以下方法
[HttpPost]
[ActionName("Avatar")]
public ActionResult AvatarPost(AvatarModel model)
{
...
}
5)在方法的主體中,您將在model
參數model.AvatarFile
訪問文件。 對象model.AvatarFile
提供兩種可能性,或者另存為文件https://msdn.microsoft.com/en-us/library/system.web.httppostedfilebase.saveas(v=vs.110).aspx將該文件作為流https://msdn.microsoft.com/zh-cn/library/system.web.httppostedfilebase.inputstream(v=vs.110).aspx將其轉換為byte[]
,然后分配字節數組到您的實體框架模型的特定模型。
請記住,通過上傳文件,您應保持POST消息<= 64 KB。 在其他情況下,您將自定義應用程序配置和服務器上的IIS配置。 但是64 Kbytes應該足以實現一個avatat,不是嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.