私はCakePHP2.0を学び、ユーザーが登録時にファイルを送信できるサンプルテストアプリケーションを作成しました。
以下はデータベーステーブルです
ユーザーテーブル
id Auto_Increment
first_name
last_name
email
doc_file
そしてまた作成されUser.php
、UsersController.php
以下はのコンテンツコードですUsersController.php
UsersController.php
class UsersController extends AppController{
public $helpers = array('Html', 'Form');
public function index(){
$this->set('user1', $this->User->find('all'));
}
public function register(){
if ($this->request->is('post')){
if ($this->User->save($this->request->data)){
//move_uploaded_file($this->data['Model']['field']['tmp_name'], WWW_ROOT.DS.'xxx');
move_uploaded_file($this->data['User']['doc_file']['tmp_name'], WWW_ROOT.DS.'hello.doc');
$this->Session->setFlash('User is created');
$this->redirect(array('action'=>'index'));
} else {
$this->Session->setFlash('Cannot register a user');
}
}
}
}
そして、ビューでは、2つのファイルを作成しました。つまりindex.ctp
、ビューディレクトリにregister.ctp
ディレクトリがあります。Users
のコードコンテンツregister.ctp
register.ctp
<?php
echo $this->Form->create('User', array('type'=>'file'));
echo $this->Form->input('first_name', array('label'=>'First Name'));
echo $this->Form->input('last_name', array('label'=>'Last Name'));
echo $this->Form->input('email');
echo $this->Form->input('doc_file', array('type'=>'file'));
echo $this->Form->end('Register');
?>
そして、このページを実行し、すべての情報を入力すると、エラーが発生します
Error: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'Array' in 'field list'
array
そして、以下は私が得たクエリです。doc_file
SQL Query: INSERT INTO `database_db`.`users` (`first_name`, `last_name`, `email`, `doc_file`) VALUES ('master', 'shifu', 'shifu@k.com', Array)
私が試していること:
ユーザーが登録している間、ファイル名はランダムである必要があり、に移動する必要があります
localhost/mysite/app/webroot/files/user_data/
また
localhost/mysite/app/webroot/files/user_data/user_id_directory/
ユーザーIDディレクトリを作成し、そのファイルを親ユーザーディレクトリに保存する場合は便利です