2016-07-13 14 views
6

Tôi đang sử dụng cakephp-upload plugin và tôi quản lý để upload hình ảnh lên máy chủ của tôi:hình ảnh sẽ không được lưu vào thư mục photo_dir sử dụng plugin CakePHP-upload trên CakePHP 3.2

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']); 

Bây giờ hình đại diện được tải lên, nhưng y không được đưa vào thư mục con photo_dir.

enter image description here

Tôi đang thiếu gì? Nó hoạt động mà không có bất kỳ vấn đề trong ứng dụng CakePHP 2.8.x của tôi.

+0

tệp photo_dir có thực sự tồn tại trên máy chủ không? – Wolfeh

+0

'photo_dir' là một cột trong bảng công nhân. – doonot

Trả lời

1

Tác giả của plugin tại đây.

Thuộc tính fields.dir không nêu rõ thư mục con sẽ là gì. Nó là một tham chiếu đến cột trong bảng cơ sở dữ liệu của bạn, nơi chúng ta nên lưu director nơi chúng tôi đã lưu tệp.

Nếu bạn muốn thay đổi vị trí lưu tệp trên đĩa, bạn nên sử dụng tùy chọn path. Dưới đây là một ví dụ nơi mà tôi sử dụng photo_dir thư mục con:

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

Giá trị mặc định cho các tùy chọn pathwebroot{DS}files{DS}{model}{DS}{field}{DS}.

1

nên không nó là:

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

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

Không, photo_dir là một cột trong bảng công nhân. – doonot

1

Nếu bạn muốn sử dụng lựa chọn tốt hơn hơn bạn có thể sử dụng dưới đây Plugin trong đó có lựa chọn tốt hơn để tải lên các tập tin chứ không phải là Josegonzalez/Upload.Upload plugin.

Tôi đã sử dụng dưới đây một trong dự án của mình.

Utils Plugin for Cake 3.x 

Link cho plugin này: https://github.com/cakemanager/cakephp-utils

Tài liệu: http://cakemanager.org/docs/utils/1.0/behaviors/uploadable/

Và đây là cấu hình:

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

đây bạn có thể tùy chỉnh nó. Hãy cho tôi biết nếu bạn có bất kỳ câu hỏi nào về vấn đề này.

+0

Bạn đã thử giải pháp này chưa? –

Các vấn đề liên quan