如何访问和显示位于应用程序文件夹外部的图像?假设我有一个存储所有图像和其他文件类型的文件目录,并且此文件目录位于与我的应用程序文件夹不同的驱动器上.对于某些文件类型(例如.pdf,.doc,我想提示用户下载这些文件).
据我所知,不可能将绝对路径放在<img src属性中,即img src="D:\\file directory">不起作用.而且我也想限制只对登录用户的访问.
我使用PHP作为我的服务器端语言.
注意: <img src="file:/// .../> 在Firefox中不起作用.请在此处查看评论.
编辑:由于只有经过身份验证的用户才能访问这些图像,并且因为我有一个index.php来检查所有传入的请求,过滤掉未经过身份验证的用户,我认为创建Apache Alias不会起作用.
这是我的conf文件的一个例子:
NameVirtualHost *:80
<VirtualHost *:80 >
ServerName pmmenu.businessjob.net
DocumentRoot "D:\web"
DirectoryIndex index.html index.php
<Directory "D:\web">
AddDefaultCharset UTF-8
Order Deny,Allow
Allow from all
RewriteEngine on
RewriteBase /
RewriteRule ^$ index.html [QSA]
RewriteRule ^([^.]+)$ $1.html [QSA]
RewriteCond %{REQUEST_FILENAME} !-f
# no, so we redirect to our front web controller
RewriteRule ^(.*)$ index.php [QSA,L]
</Directory>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
我想你在这里错过了一个基本概念.所有HTML都在客户端解释.每个图像都是由访问者的浏览器单独下载的.由于您的访问者只能访问那些公开的文件,"file:/// something"对他们不起作用,因为这会要求他们的浏览器访问本地(他们的)文件系统,这些文件系统将被阻止或者找不到请求的文件系统图像,因为它没有存储在他们的磁盘上.
因此,您必须发布这些图片并通过http访问它们,以便访问者可以看到它们.您可以通过创建子域或虚拟目录来完成此操作.
由于您只希望经过身份验证的用户能够看到它们,因此您还可以创建一个用于检查用户是否经过身份验证的php文件,例如:
if(user_is_authenticated()){
$pathToFile = "d:\images\myimage.jpg";
$handle = @fopen($pathToFile, "rb");
$contents = @fread($handle, filesize($pathToFile));
@fclose($handle);
//sent appropriate header
header('Content-type: image/jpeg');
echo $contents;
}
Run Code Online (Sandbox Code Playgroud)
但你必须要知道,这个脚本将始终读取整个图像并随后打印,这是一个巨大的开销.
| 归档时间: |
|
| 查看次数: |
1457 次 |
| 最近记录: |