2016-07-13 1 views
6

CakePHPの3.2にCakePHPのアップロードプラグインを使用してphoto_dirフォルダに保存されていないと私は私のサーバーに画像をアップロードするために管理:画像は私が<a href="https://github.com/josegonzalez/cakephp-upload" rel="noreferrer">cakephp-upload plugin</a>を使用しています

WorkersTable:

public function initialize(array $config) 
{ 
    parent::initialize($config); 

    $this->table('workers'); 
    $this->displayField('id'); 
    $this->primaryKey('id'); 

    $this->addBehavior('Josegonzalez/Upload.Upload', [ 
     'avatar' => [ 
      'fields' => [ 
       'dir' => 'photo_dir' 
      ] 
     ] 
    ]); 
} 

view.ctp:

echo $this->Form->create($newWorker, ['type' => 'file']); 
echo $this->Form->input('avatar', ['type' => 'file']); 
echo $this->Form->input('photo_dir', ['type' => 'hidden']); 

今すぐアバター画像がアップロードされているが、 yは、photo_dirサブディレクトリには入れません。

enter image description here

私は何をしないのですか?私のCakePHP 2.8.xアプリケーションで問題なく動作します。

+0

実際にphoto_dirはサーバーに存在しますか? – Wolfeh

+0

'photo_dir'は、workersテーブルのカラムです。 – doonot

答えて

1

ここにプラグインの作者。

fields.dir属性には、サブディレクトリの内容が記載されていません。これは、ファイルを保存したdirectorを保存するデータベーステーブルの列への参照です。

ディスク上のファイルを保存する場所を変更する場合は、代わりにpathオプションを使用する必要があります。ここで私はphoto_dirサブディレクトリを使用する例です。pathオプションの

$this->addBehavior('Josegonzalez/Upload.Upload', [ 
    'avatar' => [ 
     'path' => 'webroot{DS}files{DS}{model}{DS}{field}{DS}photo_dir{DS}' 
    ] 
]); 

デフォルト値はwebroot{DS}files{DS}{model}{DS}{field}{DS}です。

1

は、それはすべきではない:

$this->addBehavior('Josegonzalez/Upload.Upload', [ 
    'avatar' => [ 
     'fields' => [ 
      'dir' => 'avatar_dir' 
     ] 
    ] 
]); 

echo $this->Form->input('avatar_dir', ['type' => 'hidden']); 
+0

いいえ、photo_dirはworkersテーブルの列です。 – doonot

1

あなたはファイルではなく、Josegonzalez/Upload.Uploadプラグインをアップロードするためのより良いオプションを持っているプラ​​グインの下に使用することができますより良いオプションを使用したい場合。

私は自分のプロジェクトで以下の1つを使用しました。このプラグインの

Utils Plugin for Cake 3.x 

リンク:https://github.com/cakemanager/cakephp-utils

ドキュメント:http://cakemanager.org/docs/utils/1.0/behaviors/uploadable/

そして、これが構成です:ここでは

$this->addBehavior('Utils.Uploadable', [ 
      'image' => [ 
       'path' => '{ROOT}{DS}{WEBROOT}{DS}uploads{DS}{field}{DS}', 
       'fileName' => md5(rand(1000, 5000000)) . '.{extension}', 
       'removeFileOnDelete' => true, 
       'removeFileOnUpdate' => FALSE 
      ], 
     ]); 

あなたはそれをカスタマイズすることができます。あなたはこれについて何か質問がある場合は私に教えてください。

+0

このソリューションを試しましたか? –

関連する問題

 関連する問題