2012-10-01 91 views
0

我用努力来实现blueimp jQuery的文件上传插件。 我的最终目标是让插件针对特定文件夹上传取决于URL指定的ID从输入表单传递变量upload.class.php

前)../plugin_path/index.php?job=13

然后上传会去名为“13”的文件夹。因此,只有先前上传的“Job 13”图像才会显示在上传页面上。

我的问题是,从URL请求后的值:

$jobid=$_REQUEST['job']; 

我不能传递给“upload.class.php”引用它在“upload_dir”的$作业ID变量。

有谁知道怎么可以这样做? 在此先感谢。以下一个

'upload_dir' => dirname($_SERVER['SCRIPT_FILENAME']).'/files/', 

+0

我们需要看到更多的代码。 upload.class.php如何使用?如果它是一个包含的类,则超全局'$ _REQUEST'应该可用。 (你应该使用'$ _GET'明确,不'$ _REQUEST') –

回答

1

我在该插件采取一看,你可以通过更换39以下线upload.class.php

'upload_dir' => isset($_REQUEST['job']) ? $_REQUEST['job'].'/' : dirname($_SERVER['SCRIPT_FILENAME']).'/files/', 
+0

谢谢,这看起来像它应该工作,但是它仍然默认为“文件”文件夹中。看起来$ _REQUEST ['job']没有设置。 “工作”是在表单的url中设置的,而不是upload.class.php? – dsol828

+0

你可以发布你的文件上传的JavaScript吗? – Nelson

+0

这个插件中有很多javascript,我不确定发布哪一个。主要的JS应用程序? jquery.fileupload.js? 该插件还规定了以下内容: “最简单的方式补充提交表单数据是通过添加额外的输入字段上传表单 默认情况下,该插件调用上传表单jQuery的serializeArray方法收集的所有附加表单数据输入字段(包括隐藏字段) 这些表单字段的值将与选定的文件一起发送到服务器。“ 这可以用来传递工作ID吗? – dsol828

1

好,我已经采取的时间来研究这一点,并测试它,忘记我的其他的答案,只是你的插件文件夹编辑server/php/index.php并替换以下行:

$upload_handler = new UploadHandler(); 

此代码:

$option = null; 
if (isset($_REQUEST['job'])) { 
    if (substr($_REQUEST['job'],-1)!= '/') { 
     $_REQUEST['job'] .= '/'; 
    } 
    $dir = dirname($_SERVER['SCRIPT_FILENAME']).'/files/'.$_REQUEST['job']; 
    if (!file_exists($dir)) { 
     mkdir($dir, 0777, true); 
    } 
    $option = array('upload_dir' => $dir); 
} 

$upload_handler = new UploadHandler($option); 

随着这一变化,您的文件将被正确上传到您在输入隐藏的index.html指定的文件夹:

<input type="hidden" name="job" value="7"> 

有因为当刷新页面时,只会显示根上传文件夹中的文件,如果您希望它还显示通过'job'参数指定的子文件夹中的文件,则需要进一步修改。

+0

非常感谢您花时间。坏消息然而...进行更改后,每次上传时都会收到“错误 - 内部服务器错误”。我没有更改upload.class.php - 这只是股票,因为我从插件下载它。 – dsol828