&引用;不允许加载本地资源:file:///C:....jpg" javaee-Tomcat
我试图在存储良好后从文件系统中检索图片(而不是将其放入数据库,而是将其复制到光盘,并将路径放入数据库)&引用;不允许加载本地资源:file:///C:....jpg" javaee-Tomcat,java,tomcat,storage,Java,Tomcat,Storage,我试图在存储良好后从文件系统中检索图片(而不是将其放入数据库,而是将其复制到光盘,并将路径放入数据库) 我已将图片存储到c:\images\文件夹,并假设完整路径的名称为c:\images\mypic.jpg 当我试图检索它时,使用一些java代码将img src属性设置为 在浏览器控制台中,我发现此错误不允许加载本地资源:file:///C://images//mypic.jpg 问题:如何解决这些路径问题?我应该把照片存放在哪里?我应该从哪里取回它们呢?您有两种选择: 第一种方法是创建一个S
不允许加载本地资源:file:///C://images//mypic.jpg
问题:如何解决这些路径问题?我应该把照片存放在哪里?我应该从哪里取回它们呢?您有两种选择: 第一种方法是创建一个ServletImageLoader,它将图像的标识符(图像的路径或散列)作为参数,您将在Servlet内部使用该标识符来处理图像,它将从服务器向响应流打印加载的图像
第二种方法是在应用程序的根文件夹中创建一个文件夹,只保存图像的相对路径 http位置和磁盘位置的概念是不同的。您需要做的是:
summer.jpg
c:\images\summer.jpg
summer.jpg插入表示图像的db记录
/images
下提供c:\images\
服务的东西(例如apache)。如果无法执行此操作,则在步骤2中,您需要将其保存在web根目录下的某个位置,例如c:\my applications\demo app\build\images
许多浏览器已经改变了安全策略,不再允许直接从文件共享甚至本地资源读取数据。您需要将文件放在tomcat实例可以提供服务的地方,并在生成的html中放置一个“常规”http url。这可以通过提供一个servlet来实现,该servlet读取并提供文件,将文件放入一个目录中,tomcat将在该目录中将其作为“静态”内容提供。发送标记
将导致用户浏览器从其文件系统访问图像。
如果您必须将图像存储在位于c:\images
的文件夹中,我建议创建一个类似于images.jsp的servlet,它作为一个参数获取文件名,然后将servlet响应内容设置为image/jpg,然后从服务器位置加载图像字节并将其放入响应
但是您使用什么来创建应用程序呢?它是纯servlet吗?春天JSF
您可以找到一些关于如何执行此操作的信息。在Chrome中,您应该能够通过运行时标志(允许从文件访问文件)来允许此功能 然而,当前版本的Chrome(37,38)似乎存在一个问题,除非您同时传递运行时标志——禁用web安全性,否则无法正常工作 这是一个不可接受的解决方案,也许只是作为一个短期的解决办法,但它已被确定为一个问题:
此错误意味着您无法直接从文件系统加载数据,因为这背后存在安全问题。我知道的唯一解决方案是创建一个web服务来服务加载文件 不要使用绝对路径来引用图像的名称,例如:
C:/xamp/www/Archivos/images/templatemo\u image\u 02\u opt\u 20160401-1244.jpg
。必须使用对其在Web服务器中位置的引用。例如,使用。/../Archivos/images/templatemo_image_02_opt_20160401-1244.jpg
,具体取决于进程的运行位置 如果您只想在本地运行此应用程序,而不考虑安全性,这里有一个简单的expressjs
解决方案:
在server.js
或app.js
文件中,添加以下内容:
app.use('/local-files', express.static('/'));
它将服务于/local files
下的整个根目录。不用说,如果您计划在本地计算机以外的任何地方部署此应用程序,这将是一个非常糟糕的主意
现在,您可以简单地执行以下操作:
<img src="/local-files/images/mypic.jps"/>
注意:我正在运行macOS。如果您使用的是Windows,则可能必须搜索并从路径字符串中删除“C:\”对此无能为力。我还没用呢。但是环顾四周,我相信你会找到一个关于通过zk框架发送图像内容的教程。另外,您应该能够在应用程序中编写具有该功能的纯servlet方法。我认为第二种方法很好,请您澄清一下如何使用-我的意思是在哪里找到我的应用程序的根-把图片放在那里的路径是什么-那么检索的路径是什么呢?你可以用apache with
Alias
或者你可以用tomcat(或者你使用的任何容器)withServletImageLoader
来进行检索,正如Mifmif所说。你能澄清一下Alias方法吗,因为我使用的是zk框架,首先,我无法使用servletImageLoader,我认为Google:apache alias
。我使用的是apache服务器,但它仍然无法工作。不仅在chrome中,其他浏览器(如Mozilla和Edge for MS)都不提供图像服务。我正在处理一个WordPress项目,我得到了相同的“不允许加载图像”错误。两个标志--允许从文件访问文件和--禁用web安全性不再起作用。