0

我正在使用jQuery 文件上传插件

我已阅读提供的所有文档。有一个 php 集成类,但该类非常复杂,根本没有评论我只想如何接收 JSON 数据和对插件的响应。

因为我想要一个简单的实现,只需接收 $_FILES 数组并使用移动上传的文件上传文件。这是一个简单的插件:

$('#fileupload').fileupload({

     dataType: 'json',
  done: function (e, data) {
      $.each(data.result, function (index, file) {
        $('<p/>').text(file.name).appendTo(document.body);
      });
  }
});

html是:

   <input id="fileupload" type="file" name="files[]" data-url="server/php/" multiple>

问题是如何从这个插件接收 $_FILES 数组并响应它???

请问有人可以帮我吗?只是一个简单的代码片段,我会做剩下的

4

2 回答 2

2

好的,在 php 端获取数据:

这应该是这样的:

<?php
foreach( $_FILES as $f )
{
    echo "name = ".$f['name'][0]."\n";
    echo "type = ".$f['type'][0]."\n";
    echo "tmp_name = ".$f['tmp_name'][0]."\n";
    echo "error = ".$f['error'][0]."\n";
    echo "size = ".$f['size'][0]."\n";

}
?>

如果它不起作用(在您的 php 处理程序中):

# ...
error_log( print_r( $_REQUEST, true ) )
error_log( print_r( $_FILES, true ) )
# ...

输出将写入服务器的错误日志。它看起来应该有点像:

# $_REQUEST
array(0) {
}

# $_FILES
array(1) {
  ["files"]=>
  array(5) {
    ["name"]=>
    array(1) {
      [0]=>
      string(30) "some.pdf"
    }
    ["type"]=>
    array(1) {
      [0]=>
      string(15) "application/pdf"
    }
    ["tmp_name"]=>
    array(1) {
      [0]=>
      string(14) "/tmp/phpkqOz2M"
    }
    ["error"]=>
    array(1) {
      [0]=>
      int(0)
    }
    ["size"]=>
    array(1) {
      [0]=>
      int(51869)
    }
  }
}

您将不得不遍历 $_FILES 数组并将每个数组移动到存储它的位置...

foreach( $_FILES as $f ){
    move_uploaded_file( $f['tmp_name'][0], './some/path/'.$f['name'][0] );
}
于 2012-11-19T21:29:23.927 回答
1

这个插件有一些很酷的服务器端代码,已经为你完成了存储文件的工作。您可以覆盖构造函数中定义的所有默认值。这是一个基于这个伟大插件的项目页面上有点太短的例子的例子。

<?php
require('UploadHandler.php');
$upload_handler = new UploadHandler( array(
  'upload_dir' => dirname(__FILE__).'/files/',
  'accept_file_types' => '/(jpg|gif|txt)$/i',
) );
?>

这将接受所有 jpg、gif 和 txt 文件并将它们存储到“/files/”目录,这是该脚本所在目录下的本地路径。当然,您可以指定另一个路径,只要它是绝对路径。也许它甚至可以与相对路径一起使用。

只需根据需要覆盖UploadHandler.php的第 39 - 107 行中的选项。

于 2012-11-19T20:37:26.527 回答