Php jquery文件上传插件:我可以在运行时设置上传路径吗?

Php jquery文件上传插件:我可以在运行时设置上传路径吗?,php,jquery,jquery-file-upload,Php,Jquery,Jquery File Upload,我还发现了其他关于更改jquery文件上传插件上传路径的帖子。然而,答案通常包括将其硬编码到upload.class.php文件中 我知道如何做到这一点,但问题是,将有多个用户上传多个文件,需要转到不同的文件夹。我需要能够动态设置文件的目标路径 有什么办法可以做到这一点吗?我已经看过jquery文件上传文档,但没有提到这样的选项。事实上,也许只是我累了,但文档似乎非常缺乏 如果无法动态设置上传路径,那么我的一个解决方法是在上传完成后运行另一个脚本,将文件从硬编码的目的地移动到正确的位置,但这样做

我还发现了其他关于更改jquery文件上传插件上传路径的帖子。然而,答案通常包括将其硬编码到
upload.class.php
文件中

我知道如何做到这一点,但问题是,将有多个用户上传多个文件,需要转到不同的文件夹。我需要能够动态设置文件的目标路径

有什么办法可以做到这一点吗?我已经看过jquery文件上传文档,但没有提到这样的选项。事实上,也许只是我累了,但文档似乎非常缺乏


如果无法动态设置上传路径,那么我的一个解决方法是在上传完成后运行另一个脚本,将文件从硬编码的目的地移动到正确的位置,但这样做似乎很愚蠢。

这是我最终得出的解决方案

首先,我将URL参数添加到文件上传程序附加到的
input
标记中的
数据URL
(它应该指向jquery file upload
server/php/
子文件夹,其中包含一个
index.php
文件):

最后,在
upload.class.php
文件中,我根据要使用
开关自定义的值修改了相应的行:

    function __construct($options = null, $initialize = true) {
        $this->options = array(
        'script_url' => $this->get_full_url().'/',
        'upload_dir' => $GLOBALS["upload_dir"],
        'upload_url' => $GLOBALS["upload_url"],
        'user_dirs' => false,
        'mkdir_mode' => 0755,
        'param_name' => 'files',
        'delete_type' => 'DELETE',
        'access_control_allow_origin' => '*',
        'download_via_php' => false,
        'inline_file_types' => '/\.(gif|jpe?g|png)$/i',
        'accept_file_types' => $GLOBALS["allowed_exts"],
        ...etc
我在
开关中定义的变量
在这里被用作“$GLOBALS[“varname”],以便可以在类中使用它们

我希望这能帮助一些人。每个人的情况都会不同,所以我不建议完全复制和粘贴此代码。我只是想说明一下基本的想法

注意:“upload_dir”是根路径,“upload_url”是公共路径

另请注意:正如您在我的示例中所看到的,我还使用此方法根据条件确定允许哪些文件类型


可能有一种内置的方法可以通过文件上传器API/选项来实现这一点,但是文档中对您实际可以做什么的描述非常模糊。

好主意,但您不必破解upload.class.php,您可以通过传入如下数组来覆盖选项:

$upload_dir = '/some/other/directory/';
$options = array('upload_dir' => $upload_dir);
$upload_handler = new UploadHandler($options);

是的,没错。既然已经实现了params/options扩展覆盖,为什么还要费心添加代码呢?查看UploadHandler类的构造函数:if($options){$this->options=array\u merge($this->options,$options)}您好,感谢您的贡献。我也有同样的问题,我的意思是:我不知道如何通过index.php获得?type=a。我想有一个基本的页面,问在哪个文件夹你想上传图片。。。当您通过单击链接选择哪个文件夹时。。。我需要告诉上传者获取参数,这样在index.php中我可以切换。。。但我无法获取参数的值?类型。。。
    function __construct($options = null, $initialize = true) {
        $this->options = array(
        'script_url' => $this->get_full_url().'/',
        'upload_dir' => $GLOBALS["upload_dir"],
        'upload_url' => $GLOBALS["upload_url"],
        'user_dirs' => false,
        'mkdir_mode' => 0755,
        'param_name' => 'files',
        'delete_type' => 'DELETE',
        'access_control_allow_origin' => '*',
        'download_via_php' => false,
        'inline_file_types' => '/\.(gif|jpe?g|png)$/i',
        'accept_file_types' => $GLOBALS["allowed_exts"],
        ...etc
$upload_dir = '/some/other/directory/';
$options = array('upload_dir' => $upload_dir);
$upload_handler = new UploadHandler($options);