【问题标题】:Passing variable from input form to upload.class.php将变量从输入表单传递到upload.class.php
【发布时间】:2012-09-22 19:45:43
【问题描述】:

我正在尝试实现 blueimp jquery 文件上传插件。 我的最终目标是让插件针对特定的上传文件夹,具体取决于 URL 指定的 ID

例如)../plugin_path/index.php?job=13

然后上传将转到名为“13”的文件夹。因此,只有之前为“Job 13”上传的图片会显示在上传页面上。

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

$jobid=$_REQUEST['job'];

我无法将 $jobid 变量传递给“upload.class.php”以在“upload_dir”中引用它。

有人知道如何做到这一点吗? 提前致谢。

【问题讨论】:

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

标签: php jquery file-upload upload blueimp


【解决方案1】:

我看过那个插件,你可以通过替换upload.class.php上的以下第39行来做到这一点:

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

对于以下一个:

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

【讨论】:

  • 谢谢,这看起来应该可以工作,但它仍然默认为“文件”文件夹。似乎 $_REQUEST['job'] 未设置。在表单的 url 中设置“工作”是否重要,而不是 upload.class.php?
  • 你能把你上传文件的javascript贴出来吗?
  • 这个插件里有不少javascript,我不知道该发哪一个。主要的 JS 应用程序? jquery.fileupload.js?该插件还声明如下:“提交额外表单数据的最简单方法是向上传表单添加额外的输入字段。默认情况下,插件在上传表单上调用 jQuery 的 serializeArray 方法来收集所有输入字段的额外表单数据(包括隐藏字段)。这些表单字段的值将与所选文件一起发送到服务器。这可以用来传递作业 ID 吗?
【解决方案2】:

好的,我已经花时间研究并测试了它,忘记我的其他答案,只需在您的插件文件夹中编辑 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 hidden 中指定的文件夹:

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

有一些地方需要改进,因为当您刷新页面时,仅显示根上传文件夹中的文件,如果您希望它还显示通过“作业”参数指定的子文件夹中的文件,则需要进行进一步修改.

【讨论】:

  • 非常感谢您抽出宝贵的时间。然而,坏消息......进行更改后,每次上传时我都会收到“错误 - 内部服务器错误”。我没有对 upload.class.php 进行任何更改 - 这只是我从插件下载的库存。
猜你喜欢
  • 2010-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-14
  • 1970-01-01
  • 2019-05-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多