How to echo image that is outside of the public folder

纵饮孤独 提交于 2019-12-02 03:52:57

问题


In this project, I am uploading admin submitted files to a folder which is outside of the public folder.

/web/ (the public folder)
/upload/ (uploading image to this which is at the same level as the public folder)

Now allthough I am able to uplaod using the absolute url (/www/userid/upload/), I am unable to echo the same image using either relative or absolute url.

I have tried <img src="/www/userid/upload/photo.jpg" /> as well as <img src="../upload/photo.jpg" /> but none is working. Any hints ?


回答1:


direct path won't work because you can't get content from outside of root folder.. you can do it another way, Read image file in php script from server dir path and serve file using header

script file.php

<?php
  $mime_type = mime_content_type("/image_path/{$_GET['file']}");
  header('Content-Type: '.$mime_type);

  readfile("/image_path/{$_GET['file']}");
?>


<img src="file.php?file=photo.jpg" />



回答2:


You normally do not access directories outside web root.

A quick solution is to add a alias in apache config like

alias /upload/ /www/userid/upload/

inside the virtualhosts

and use

/upload/photo.jpg



回答3:


I would skip the php and folder options and use symbolic links directly in the server. I assume that you are using some form of linux as your server. So, if it is not a security issue, simply make the upload folder a copy of the public folder that you have the images in. This, will, however, make everything in that folder appear in the upload folder, but this should not be much of an issue, as the alternative would be to alter permissions on the upload folder and script the whole thing out that way.



来源:https://stackoverflow.com/questions/27402572/how-to-echo-image-that-is-outside-of-the-public-folder

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!