1

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

处理这个问题的最佳方法是什么?如果它是严格的 HTML 文本,那么我可以将所有内容保存在数据库中,并且显示它不会有任何问题。但是员工想要展示图片的能力......


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

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

我知道其他人必须在某个地方这样做并成功了......

4

5 回答 5

5

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

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)
}
于 2009-11-03T09:09:54.350 回答
0
  1. 是的,如果您不打算限制对这些图像的访问。如果这样做,请将它们存储在远离 www 根目录的位置并通过脚本发送到浏览器。

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

于 2009-10-31T19:34:48.750 回答
0

请看这个

在 DB 中存储图像 - 是还是不是?

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

  • 预期的图像/文件数
  • 关于存储 blob,您将使用的特定数据库的功能和性能注意事项
于 2009-11-02T16:29:31.533 回答
0

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

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

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

于 2009-11-03T08:48:41.570 回答
0

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

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

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

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

请注意,存在与 S3 相关的成本(请参阅定价),但假设成本在范围内,它是解决此类问题的一个很好的解决方案。

于 2009-11-05T20:56:03.250 回答