我正在为一家售后客户服务企业做一个内部网。员工需要能够上传img文件到内联网的服务器,我需要将它们存储在一个目录与www之前(网站的根目录)。
使用php实现这一点很简单,但是如何在上传后将这些img包含在网站上呢?我试过这段代码
<img src="../img/img.png"/>这是不工作的,因为我不能发送一个文件,如果它在服务器的www目录之外...
有什么适当的方法可以做到这一点吗?
当前树视图:
server root directory
|www
|(all server files)
|img
|(all img files)(服务器的index.php位于www,文件位于img)
发布于 2012-11-13 17:26:40
您不能直接访问web目录之外的任何文件。由于您的问题还包括标签PHP,因此我假设您可能想要使用它。
您可以执行以下操作:
在www目录中,创建一个"image.php“文件,其内容类似于:
<?php
header('Content-Type: image/png');
readfile("../img/" . $_GET['img']);
?>并调用您的图像
<img src="image.php?img=myimage.png" />请注意,你的PHP文件不应该那么简单:),因为你可能想要处理多种图像格式(并为它们提供正确的头),检查恶意的文件路径/包含(你不想在没有验证/消毒输入的情况下使用$_GET ),额外的缓存等等。
但这应该会让你对如何针对你的问题有一个想法。
发布于 2012-11-13 17:29:06
这取决于你想要实现什么以及如何实现。使用“简单的”html命令,正如你所发现的那样。您不能转到www根目录之外的目录。(例如,对于C上的xampp应用程序,大部分时间是c:\xampp\htdocs)。
如果您可以使用服务器端命令来完成您想要实现的功能,那么您可以使用PHP来解决这个问题,通过php读取适当的文件。例如,如果您的文件名为"myimg.gif“,并且位于"c:\pics”中
<img SRC="data:image/gif;base64,<?php echo base64_encode(file_get_contents("c:\pics\myimg.gif"));?>">这样,您就可以读取文件的内容并将其直接写入img标记。请注意,您需要将image/gif更改为您真正需要的内容。
发布于 2012-11-13 17:17:51
您不能直接访问根目录(www或public_html)之外的文件。
您可以在Apache服务器配置中创建虚拟目录。谷歌"apache虚拟目录“以获取更多信息。
虚拟目录配置示例:
<IfModule alias_module>
Alias /uploaded_images/ "/home/someuser/somewhere"
<Directory "/home/someuser/somewhere">
Allow from all
</Directory>
</IfModule>uploaded_images目录将像www目录中的普通目录一样,从web上可用。您可以将文件从那里复制到另一个位置(某种缓冲)。
你也可以通过ftp从php级别打开/复制该文件,而不需要改变apache中的任何东西,但这可能真的很慢(只有当你无法控制apache配置时才使用它,虚拟目录要好得多)。
https://stackoverflow.com/questions/13357994
复制相似问题