3

私はblueimp jQuery File Upload プラグインを使用しており、ユーザーがアップロード用に変更できるカスタム フィールドをセットアップしようとしています。

PHP クラス内には、すべてのデフォルト オプション変数を設定する構造があります。このデータを保存できる最善の方法を探しているので、ユーザーが値を設定すると、新しいデフォルトのアップロード フォルダーとして保存されます。PHPスクリプトにインポートされた外部XMLファイル内で考えています。

アップロード クラスのコンストラクタ関数は次のとおりです。

    function __construct($options=null) {
    $this->options = array(
        'script_url' => $this->getFullUrl().'/',
        'upload_dir' => dirname($_SERVER['SCRIPT_FILENAME']).'/files/',

これが理にかなっていることを願っており、喜んで何かを明確にします。しかし、基本的には、ユーザーがディレクトリ構造を手動で入力して、それが画像の新しいアップロード ディレクトリになるようにするにはどうすればよいでしょうか? この新しい文字列変数はどこに保存できますか? おそらく PHP 内ではなく、XML や JSON などの外部ファイル内にあるのではないでしょうか?

4

3 に答える 3

5

私はあなたに気付き、ほぼ同時に github に blueimp アップロードの問題を投稿しました。完全な答えがあるかどうかはわかりませんが、これまでに見つけたものを紹介させてください. 多分それは役立つでしょう:

認証済みシステム内からアップロードされたファイルをユーザーごとにフィルタリングする方法を探していました。github.com/blueimp/jQuery-File-Upload/issues/1578 を投稿しました。プラグインの作成者は、サーバー側でフィルタリングすることを提案しました。サーバー側でフィルタリングする方法を説明している github.com/blueimp/jQuery-File-Upload/issues/1149 を見つけました。私はこれを行いましたが、アップロードに関しては機能します。これで、各ユーザーがアップロードフォルダーに、画像を含む一意の ID 番号という名前のサブフォルダーを持つようにセットアップしました。とにかく、これはアップロード パスを動的に設定する方法です。多分あなたはそれを使うことができます。

現在の問題は、画像がアップロードされていることは確認できますが、ダウンロード テーブルに表示されないことです。github.com/blueimp/jQuery-File-Upload/issues/1587 を参照してください。

これを修正するために私が行った1つの試みには、コンストラクターにオプションを渡そうとすることが含まれていました:

blueimp index.php ファイルのコードは次のとおりです。

$customer_path_files = dirname($_SERVER['SCRIPT_FILENAME']) .     DIRECTORY_SEPARATOR.         'files' . DIRECTORY_SEPARATOR . $uid . DIRECTORY_SEPARATOR;
    if (!file_exists($customer_path_files)) {
    @mkdir($customer_path_files);
}
$customer_path_thumbnails = dirname($_SERVER['SCRIPT_FILENAME']) . DIRECTORY_SEPARATOR     . 'thumbnails' . DIRECTORY_SEPARATOR . $uid . DIRECTORY_SEPARATOR;
if (!file_exists($customer_path_thumbnails)) {
    @mkdir($customer_path_thumbnails);
}

$options=array(
'upload_dir' => $customer_path_files,
'upload_url' => base_url().'blueimp/server/php/files/'.$uid.'/',
'thumbnail' => array(
                'upload_dir' => $customer_path_thumbnails,
                'upload_url' => base_url().'blueimp/server/php/thumbnails/'.$uid.'/',
                'max_width' => 80,
                'max_height' => 80
            )
);


require('upload.class.php');

$upload_handler = new uploadHandler($options);

ここで何かが役立つことを願って、


補遺:

そうなることを願っています。ところで、私はJquery File Upload プラグインを読みました: アップロードパスを動的に変更しますか? . それがまさに私がやろうとしていることです。あなたもそうである場合に備えて、プラグインのインデックスへの非表示フィールドにあるセッション変数 (私の場合は codeigniter バリアント ( $this->session->userdata('uid') ) も渡そうとしたとだけ言っておきましょう。 php ファイルですが、投稿と同じように index.php には存在しません (再作成または削除のためにアップロード ボタンが押されていないためだと思います)。セッション ID は、何らかの方法で Json を介して送信する必要があります. 私はそれを理解しようとしています. それは Chris G がやったことのように聞こえます. 助けがあれば、次の質問をいくつかの詳細とともに投稿しました:

http://www.dynamicdrive.com/forums/showthread.php?p=279824

于 2012-08-16T00:41:07.750 に答える
2

ワードプレスのユーザーデータの私のコード、

前:

function __construct($options = null, $initialize = true) {

    $this->options = array(
        'script_url' => $this->get_full_url().'/',
        'upload_dir' => dirname($_SERVER['SCRIPT_FILENAME']).'/files/',
        'upload_url' => $this->get_full_url().'/files/',
        'user_dirs' => false,
        'mkdir_mode' => 0755,
        'param_name' => 'files',

後:

function __construct($options = null, $initialize = true) {

    require_once '../../../../wp-config.php';
    global $wpdb, $user_ID;

        if($user_ID) $userdi = $user_ID.'/';

    $this->options = array(
        'script_url' => $this->get_full_url().'/',
        'upload_dir' => dirname($_SERVER['SCRIPT_FILENAME']).'/files/'.$userdi,
        'upload_url' => $this->get_full_url().'/files/'.$userdi,
        'user_dirs' => false,
        'mkdir_mode' => 0755,
        'param_name' => 'files',
于 2013-03-13T17:40:37.037 に答える