2009-10-31 51 views
1

我有一個項目,公司的用戶將使用winform HTML編輯器爲特定客戶放置一些文本和圖片。客戶將在網站上查看這些信息。何處保存HTML和圖像?

處理這個問題的最佳方法是什麼?如果它是嚴格的HTML文本,那麼我可以將所有內容保存在數據庫中,而不會有任何問題顯示。但員工要顯示圖片的能力...


  1. 難道我保存的圖片作爲一個文件在一些公共場所,這樣的網站,並在WinForm程序可以看到它?這裏的問題將是其中是存儲圖片的最佳公共場所。網絡服務器將成爲無人訪問的鎖定服務器。我可以從ASP.Net的非本地目錄中獲取文件嗎?

  2. 我是否將圖片保存在數據庫中,並使程序足夠智能,以便用數據庫中的圖片替換圖像源標籤?我想這可能會困難的(肯定在網絡上...如果有人跟你這個,你能不能給我如何做到這一點的WinForm的和網絡的一些C#的例子嗎?)

我知道別人有做到這一點,併成功...

回答

4

我建議使用一個數據庫來存儲到本地圖像的路徑(如果可能的話你的設置)

,例如物理圖像將被保存在類似以下的路徑:

/App_Themes/Web/images/userfiles/YOURIMAGENAME.jpg 

,只是保存在數據庫中的以下

YOURIMAGENAME.jpg 

這則意味着你可以擁有財產以後類似如下:

<asp:Image ID="imgImage" runat="sever" /> 

protected void Page_Load(object sender, EventArgs e) 
{ 
    //Your data-access code here 

    //image.ImageName is provided by your data access code. 
    imgImage.ImageUrl = string.Format("/App_Themes/Web/images/userfiles/{0}", image.ImageName) 
} 
0
  1. 是的,如果你不打算限制訪問這些圖像。如果你這樣做,把它們從www root存儲並通過腳本發送給瀏覽器。

  2. 更好的方法是將圖像存儲在光盤上並將它們保存在相對路徑中 - 在數據庫中。數據庫不是存儲文件的正確位置。

0

請參閱有關此主題的這個

Storing Images in DB - Yea or Nay?

和其他老問題。在我看來,任何選擇都是可能的和合法的,兩者的結合也是如此(在數據庫中存儲文件引用)。你應該讓你的決定基於你的項目的具體情況(即你沒有提供),如

  • 數量的圖像/文件預計
  • 能力,並且你會使用特定的數據庫性能方面的考慮,關於存儲斑點
0

您可以輕鬆地將圖像存儲在數據庫中,然後檢索它們。要顯示數據庫中的圖像,您可以使用asp.net頁面(請參閱article)或HttpHandler

您還可以將文件存儲在本地文件夾中。可以使用常規的讀/寫文件操作。爲了使其工作,ASP.NET用戶([Local Machine] \ ASPNET或NETWORK SERVICE)需要對該文件夾進行讀/寫訪問。要使用遠程文件夾,事情更多tricky,並且您可能會在創建安全漏洞時嘗試這樣做。

作爲結論,我相信最好的解決方案是使用本地文件夾。如果不可能,請避免使用特殊的解決方案(FTP,用戶模擬,Web服務上傳/加載圖像)並使用數據庫。

0

如果無法使用文件系統,請考慮將圖像存儲在雲存儲中,如Amazon S3

您可以配置S3對象,使其可以公開閱讀,但可以私人寫入,這樣只有您的軟件才能將圖像添加到S3,但網絡上的任何人都可以查看它們。根據您的安全需求,您可以在您的WinForms應用程序中編碼S3密鑰來構建PUT URL,或者在應用服務器上創建一個簡單的Web服務,以驗證用戶身份並使用服務器上的密鑰創建PUT URL。然後可以將PUT URL返回給客戶端,客戶端可以使用該客戶端上傳圖像數據。

使用S3,您可以使用HTTP PUT上傳圖像,編輯器和網絡瀏覽器將像往常一樣使用HTTP GET來訪問圖像。有可用的C#庫和大量的網上示例代碼來訪問S3。

你實際上也可以對HTML數據做同樣的事情。

請注意,有與S3(see pricing)相關的成本,但假設成本在範圍內,這是解決這類問題的最佳選擇。