簡體   English   中英

如何在MVC 5和EF6中使用FILESTREAM

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM