Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP将照片存储在非公共文件夹中_Php_Image - Fatal编程技术网

PHP将照片存储在非公共文件夹中

PHP将照片存储在非公共文件夹中,php,image,Php,Image,我想创建一个照片共享php网站,我对php非常陌生,我习惯于基于Java的服务器 我想提供一个表单来上传图像。我希望能够上传数百张图像,因此最好将图像存储在本地文件夹中,并在数据库中存储指向该文件的指针。原因是MySQL数据库有限,但磁盘空间有限 上传图像的人可以与其他用户共享这张照片,因此我将有一个表来维护图像的权限 我不希望使用直接URL下载此照片-URL应提供图像的ID作为查询参数,服务器将使用该图像进行响应,但它仅在该用户具有文件权限的情况下才起作用。我知道如何做到这一点,通过创建一个p

我想创建一个照片共享php网站,我对php非常陌生,我习惯于基于Java的服务器

我想提供一个表单来上传图像。我希望能够上传数百张图像,因此最好将图像存储在本地文件夹中,并在数据库中存储指向该文件的指针。原因是MySQL数据库有限,但磁盘空间有限

上传图像的人可以与其他用户共享这张照片,因此我将有一个表来维护图像的权限

我不希望使用直接URL下载此照片-URL应提供图像的ID作为查询参数,服务器将使用该图像进行响应,但它仅在该用户具有文件权限的情况下才起作用。我知道如何做到这一点,通过创建一个php来读取文件并输出到响应


如果我将照片存储在某个文件夹内的磁盘上,如何确保照片不会被直接URL(如
/path/to/photo.png
)命中?

您有两种不同的选择

首先,假设您使用的是apache,请在文件夹上使用.htaccess文件使其受到限制,或者在可能的情况下修改httpd文件

见:

特别是,DENY命令:

无论哪种方式,php都应该能够访问图像,因为它是服务器端的

另一种选择是将文件存储在php服务器所在的文件夹之外(例如,在apache的htdocs之外)。您可以使用file:///在文件系统中导航,直接放置目录(例如e:\Images)或相对路径。php不限于将文件保存在互联网可访问的区域内


请参阅:

您可以使用php脚本加载照片;在php脚本中,你检查用户是否有权查看照片,或者只加载他有烫发要看的照片,因此你加载照片,编码为base64,并通过PHP64显示。请确保将其存储在文档根目录之外。我也做过类似的工作,我们将内容存储在/var/contracts/user\u id/中。使用PHPs检查目录,然后为每个用户ID分别设置每个目录。您可能必须使用chownI am使用godaddy授予该目录的apache权限,所以我不知道是否能够引用htdocs文件夹之外的文件。这个.htaccess文件听起来很有趣,但是您能提供文件将包含什么吗?好的,那么您想要一个.htaccess文件,正如我提到的。在要限制访问的文件夹中创建一个名为“.htaccess”的文件,并在一行中键入Deny from All。php应该仍然能够访问这些文件,但其他人不会。