0

我目前在我的 Web 根目录之外存储了许多文档预览图像 (jpg/tif)。它们有 100 多个,因此有效地进行这项工作很重要。它们存储在 Web 根目录之外的原因是它们包含只有特定用户/用户组可以查看的数据(但每个用户可以拥有 100 多个他们可以查看的文档)。

我当前的实现是,当用户选择“查看图像”时,会触发一个 ajax 调用,这会将相关图像移动到 Web 根目录中的特定文件夹。该位置被传回并用于向用户显示图像。单击下一个图像时,调用会删除所有现有图像并复制请求的图像。在会话注销/超时时,用户图像文件夹被清空。这有一些问题,但主要是:

  1. 文件不断被复制和删除
  2. 存在图像留在文件夹中的风险(注销脚本问题)
  3. 图像在文件夹中的整个时间都可以被其他用户查看(不太可能但可能)

有没有更好的方法来做到这一点?我试图将 BinaryReader 与 ajax 调用结合起来(因为我希望这会减少复制文件的需要),但看不到如何取回数据以供调用页面中的 JS 使用。

或者,是否有一种方法可以根据某些会话标准使选定的文件夹仅可供给定用户访问?(我无法想象有,但我认为值得一问。)

因此,如果有人对如何改进这一点有任何想法,那就太好了。这是使用 Jquery 的 ac# ASP.NET 应用程序。

编辑:图像使用 ajax 显示,这允许预加载,也意味着当他们选择下一张/上一张图像时不需要重新加载页面的其余部分。它几乎可以被认为是一种 javascript 图像交换器类型的情况,其中图像存储在 Web 根目录之外。

谢谢。

4

3 回答 3

1

我当前的实现是,当用户选择“查看图像”时,会触发一个 ajax 调用,这会将相关图像移动到 Web 根目录中的特定文件夹。

这是一个可怕的想法。您意识到您可以访问图像数据并将其作为具有特定 mime 类型的流传递到网络,对吧?

于 2013-10-27T16:04:28.000 回答
0

也许尝试编写一个通过cookies检查用户凭据的方法,如果不正常,则加载并发送回一些标准图像,说明用户必须登录才能查看文件,如果可以,则加载并显示正确的文件基于 url 参数的根目录之外的路径(具有适当的标头,例如content-type也通常称为mime-type ofc)。然后使用适当的参数将 url 链接到该方法。

您可以轻松找到代码示例(如此)以从 DB 中以二进制形式显示图像。您只需要从根目录之外的某个路径加载它们,而不是数据库。

此外,您不需要通过 AJAX 加载它 - 只需添加 IMG 和 SRC 指向处理程序的 URL。或重定向/打开窗口,如果需要下载未显示。

于 2013-10-27T16:11:01.237 回答
0

问题是如何通过不在网络根目录中的 javascript 显示图像。

我创建了一个基于会话值(身份验证)的通用处理程序(ashx 文件),提交的参数将返回一个图像。

这反过来又通过 AJAX 调用。

于 2013-11-19T19:38:47.523 回答