如何使用php为用户上传的文件创建自定义url

如何使用php为用户上传的文件创建自定义url,php,jquery,mysql,.htaccess,mod-rewrite,Php,Jquery,Mysql,.htaccess,Mod Rewrite,如何为用户上传的文件提供自定义url 例如:用户上传一个名为stack.png的文件,并上传到目录中 但是我想允许用户在以下位置查看/下载相同的文件: 请注意,我不想使用url缩短/更改脚本,我想以某种方式将文件url映射到该位置,以便用户可以使用url在其网站或博客中插入文件“http://www.website.com/username/uploads/stack.png“而不是”http://www.website.com/uploads/stack.png" 有可能吗??如果是,我如何使

如何为用户上传的文件提供自定义url

例如:用户上传一个名为stack.png的文件,并上传到目录中

但是我想允许用户在以下位置查看/下载相同的文件:

请注意,我不想使用url缩短/更改脚本,我想以某种方式将文件url映射到该位置,以便用户可以使用url在其网站或博客中插入文件“http://www.website.com/username/uploads/stack.png“而不是”http://www.website.com/uploads/stack.png"

有可能吗??如果是,我如何使用php实现它


请注意,我有数百个文件要实现tis。

您提出的问题不容易快速回答。没有一个简单的基于PHP的解决方案可以在5秒内复制和粘贴。您建议的功能通常意味着某种形式的URL重写、路由方案或相关功能

此外,在一个拥有数千名用户的站点上,每个用户可能都可以上载许多文件,您必须开始考虑如何在文件系统中存储这些文件。一个平面目录中的数千个文件根本无法剪切它

好的。下面是一个简单的示例,说明如何开始解决此问题:

假设您实际将文件存储在以下表单中:

/uploads/<username>_<filename>.<extension>
这将允许您使用类似URL的

/<username>/uploads/<filename>.<extension>
//上传/。
创建一个名为“getfiles.php”的php脚本,并按如下方式返回该文件

<?php

$path = '/uploads/'.$_GET['username'].'_'.$_GET['file'];

if (!file_exists($path)) {
    die(
        "OMFG! The user tried to access a file that doesn't exist. " .
        "I think I'm gonna die!"
    );
}

header('Location: '.$path);

您可以在VHost配置中使用别名匹配指令:
AliasMatch^/[^/]+/(.*)/usr/local/uploads/$1


有关详细信息,请参见

如何处理两个用户上载名为
stack.png
的文件?为什么要将所有图像存储在/uploads中,而不是为每个用户创建一个目录?
<?php

$path = '/uploads/'.$_GET['username'].'_'.$_GET['file'];

if (!file_exists($path)) {
    die(
        "OMFG! The user tried to access a file that doesn't exist. " .
        "I think I'm gonna die!"
    );
}

header('Location: '.$path);