这是我最终得到的解决方案。
首先,我在文件上传器所附加的input标签中的data-url中添加了URL参数(它应该指向jquery文件上传server/php/子文件夹,其中包含一个index.php文件) :
<input type="file" name="files[]" data-url="/jquery-file-upload/server/php/?type=a">
然后我在data-url 指向的index.php 文件中使用了SWITCH 语句:
switch ($_GET["type"]) {
case "a":
$upload_dir = '/custom/folder/here/';
$upload_url = '/custom/folder/here';
$allowed_exts = '/\.(jpg|jpeg|gif|png)$/i';
break;
case "b":
// you get the idea
break;
default:
$upload_dir = dirname($_SERVER['SCRIPT_FILENAME']).'/files/';
$allowed_exts = '/.+$/i';
break;
}
最后,在upload.class.php 文件中,我根据我想使用SWITCH 自定义的值修改了相应的行:
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
我在SWITCH 中定义的变量在这里用作`$GLOBALS["varname"],以便可以在类中使用它们。
我希望这能够帮助某人。每个人的情况会有所不同,所以我不建议完全复制和粘贴此代码。我只是想说明基本概念。
注意:“upload_dir”是 ROOT 路径,“upload_url”是公共路径。
另请注意:正如您在我的示例中看到的那样,我也使用此方法来根据条件确定允许哪些文件类型。
可能有一种内置方法可以通过文件上传器 API/Options 执行此操作,但文档对您实际可以做什么非常模糊。