我正在研究一个问题。问题是:我必须使用ASP.Net MVC创建一个图像滑块。我已经完成了必要的编码,当我使用保存在我的应用程序文件夹中的图像(部署到QA环境,在那里工作正常)时它运行正常。
现在,下一个要求是我要控制其他用户(来自组织内部)来控制图像(添加/删除共享文件夹中的一些图像,应用程序可以从中访问图像的滑块)。
为此,我编写了一个脚本,根据共享文件夹中的更改更新QA环境中的文件夹(例如,“C:\ MyApp \ Images”)。我之前想过,当应用程序在那里运行时,我会要求我的应用程序从QA环境中的特定文件夹(“C:\ MyApp \ Images”)中读取图像。但是,现在我知道img
标签将尝试从客户端的机器读取它,如果我将“C:\ MyApp \ Images”之类的路径作为其src
属性。此外,这样做会带来安全漏洞。
那么,如何处理呢?在哪里保存这些图像?
谢谢!
答案 0 :(得分:0)
使用关系路径:
<img src="/images/image.png" />
这将在应用程序根目录下的images文件夹中查找image.png文件。
答案 1 :(得分:0)
始终将图像保存到您自己的系统中。它可以减少你所谈论的漏洞,其次它也减少了ImageNotFound错误的可能性。
您应该尝试将图像保存在服务器上,并让用户在浏览应用程序时使用该图像。您可以使用Guid单独命名图像。这将最小化类似命名图像的错误,并且每个用户将具有他自己的上载图像。
控件很简单,您可以使用循环显示图像,每个图像都有一个简单的删除按钮。哪会导致新的网址,例如delete_image?image_id=someId
。这就足够了。
但是,不要将图像保存在客户端的计算机上,最常见的问题是,用户可以在需要时删除图像。该记录将在您的计算机上可用,此可能导致NullPointerException。
第二件事,img
标记只会尝试从客户端的计算机上读取它,如果它是缓存。否则,HTML如何从客户端计算机读取和呈现元素。它没有这样做!只有当有可用的缓存并且存在图像文件才能使用时。
最后,使用运算符~/
为图像提供路径。例如,如果您正在运行一个路径为<,p>的网站
C:\ Users [用户名] \ Documents \我的网站[website_name] \ Images
然后,您可以使用此代码轻松地从Images文件夹中获取图像,而无需对其进行硬编码。
<img src="~/images/image.png" alt="photo" />
这非常方便,因为服务器端语言会尝试在文件系统中查找图像文件。