在哪里保存HTML和图像?

时间:2009-10-31 15:34:37

标签: image winforms-to-web

我有一个项目,公司的用户将使用winform HTML编辑器为特定客户提供一些文本和图片。客户将在网站上查看此信息。

处理此问题的最佳方法是什么?如果它是严格的HTML文本,那么我可以保存数据库中的所有内容,并且没有任何问题显示它。但员工希望能够展示图片...


  1. 我是否将图片保存为某个公共场所的文件,以便网站和winform程序可以看到它?这里的问题是其中是存储图片的最佳公共场所。 Web服务器将是一个锁定的服务器,没有人可以访问。我可以从ASP.Net的非本地目录中获取文件吗?

  2. 我是否将图片保存在数据库中并使程序足够智能,将图像源标签替换为数据库中的图片?我认为这可能会变得困难(绝对是在网上......如果有人建议这样做,你能给我一些关于如何在winform和网络上做这个的C#示例吗?)

  3. 我知道其他人必须在某个地方做到这一点并成功...

5 个答案:

答案 0 :(得分:4)

我建议使用数据库存储本地图像的路径(如果可以在您的设置中使用)

EG物理图像将保存在如下路径中:

/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)
}

答案 1 :(得分:0)

  1. 是的,如果您不打算限制对这些图像的访问。如果您这样做,请将它们存储在远离www root的位置,然后通过脚本发送到浏览器。

  2. 没有。最好将图像存储在光盘上以及相对路径上 - 在DB中。数据库不是存储文件的正确位置。

答案 2 :(得分:0)

请看这个

Storing Images in DB - Yea or Nay?

以及有关此主题的其他旧问题。在我看来,任何一种选择都是可能的和合法的,两者的结合也是如此(在数据库中存储文件引用)。您应该根据项目中的具体情况(未提供)做出决定,例如

  • 预期的图像/文件数量
  • 关于存储blob的特定数据库的功能和性能注意事项

答案 3 :(得分:0)

您可以轻松地将图像存储在数据库中,然后检索它们。要显示数据库中的图像,您可以使用asp.net页面(请参阅此article)或HttpHandler

您还可以将文件存储在本地文件夹中。可以使用常规的读/写文件操作。为了使其工作,ASP.NET用户([本地机器] \ ASPNET或NETWORK SERVICE)需要对该文件夹的读/写访问权限。要使用远程文件夹,事情会更tricky,您可能会在尝试时创建安全漏洞。

作为结论,我认为最好的解决方案是使用本地文件夹。如果这不可能,请避免使用异国情调的解决方案(FTP,用户模仿,上传/加载图像的Web服务)并使用数据库。

答案 4 :(得分:0)

如果无法使用文件系统,请考虑将图像存储在云存储中,例如Amazon S3

您可以配置S3对象,使其成为公共读取但私有写入,这样只有您的软件才能将图像添加到S3,但Web上的任何人都可以查看它们。根据您的安全要求,您可以在WinForms应用程序中编码S3密钥以构建PUT URL,或者在应用服务器上创建一个简单的Web服务,该服务对用户进行身份验证并使用服务器上的密钥创建PUT URL。然后可以将PUT URL返回给客户端,客户端可以用来上传图像数据。

使用S3,然后使用HTTP PUT上传图像,编辑器和Web浏览器都可以像往常一样使用HTTP GET访问图像。有可用的C#库和大量的示例代码可供访问S3。

您也可以对HTML数据执行相同的操作。

请注意,存在与S3相关的成本(see pricing),但假设成本在范围内,则可以很好地解决此类问题。