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

OK、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

この PlugIn には、ファイルを格納する機能を既に実行しているクールなサーバー側コードが含まれています。コンストラクターで定義されたすべてのデフォルトをオーバーライドできます。これは、この素晴らしいプラグインのプロジェクト ページにある少し短すぎるに基づいた例です。

<?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 に答える