在Cakephp中上传文件而不在mysql数据库表中添加文件名

时间:2016-10-14 06:34:28

标签: cakephp

请帮帮我。提前致谢。我是Cakephp的新手。 我正在使用cakephp2.8.5版本。我试图从HTML表单上传文件,我可以将文件存储在目标文件夹中,但无法将文件名存储在mysql数据库表中。

My code as follows:
View Page is add.ctp

<form name="add_userform" class="form-horizontal" role="form" accept-charset="utf-8" enctype="multipart/form-data" method="post" id="UserAddForm" action="/invl_exams/users/add" >

   <div style="display:none;"><input type="hidden" value="POST" name="_method"></div> 
    <div class="form-group">
      <label for="UserUsername">Username</label>  

      <input type="text" class="form-control" required="required" id="UserUsername" maxlength="255" name="data[User][username]">
      <label id="UserUsername-error" class="error" for="UserUsername"></label> 
    </div>
    <div class="form-group">
      <label for="pwd">Password:</label> 

      <input type="password" class="form-control" required="required" id="UserPassword" name="data[User][password]">
      <label id="UserPassword-error" class="error" for="UserPassword"></label>
    </div>
<div class="form-group" id="ShowDoc" style="display:none">
      <label for="usersFile">File</label>      
      <?php echo $this->Form->file('Document.submittedfile');  ?>  
    </div>

Controller Page is UsersController.php

public function add()
    {


        if($this->request->is('post')|| $this->request->is('put'))
        { 

           $this->User->create(); 
           $this->request->data['User']['password'] = AuthComponent::password($this->request->data['User']['password']);           

             $file = $this->request->data['Document']['submittedfile'];

             move_uploaded_file($this->data['Document']['submittedfile']['tmp_name'],     $_SERVER['DOCUMENT_ROOT'] . '/invl_exams/app/webroot/files/' . $this->data['Document']['submittedfile']['name']);


               if($this->User->save($this->request->data))   
                {           

                $this->redirect('addExam');                

               }                

        }  

    }

Model Page is User.php

<?php
//App::uses ('AppModel','Model'); 
class User extends AppModel{

  public $validate = array(
        'username' => array(

            'required' => array(
                'rule' => 'notBlank',
                'message' => 'Username is required'
            ),
            'isUnique' => array(
            'rule' => 'isUnique',
            'message' => 'This username has already been taken') 

        ),        
        'password' => array(

            'required' => array(
                'rule' => 'notBlank',
                'message' => 'A password is required' 
            ),
           'isUnique' => array(
            'rule' => 'isUnique',
            'message' => 'Password has already been taken')  
        ), 
        'full_name' => array(
            'required' => array(
                'rule' => 'notBlank',
                'message' => 'Full name is required' 
            )
        ),
        /*'role' => array(
            'required' => array(
                'rule' => 'notBlank',
                'message' => 'Role is required'   
            )
        ) */
       'email' => array(
       array(
        'rule' => array('email'),
        'massage' => 'Please enter a valid email address',
             ),
          ), 
          'secondary_email' => array(
       array(
        'rule' => array('email'),
        'massage' => 'Please enter a valid email address',
             ),
          ),      
      'phone' => array(
            'required' => array(
                'rule' => 'notBlank',
                'message' => 'Phone is required'  
            )
        ),
        'secondary_phone' => array(
            'required' => array(
                'rule' => 'notBlank',
                'message' => 'Phone is required'  
            )
        ),
        'location' => array(
            'required' => array(
                'rule' => 'notBlank',
                'message' => 'Loacation is required'  
            )
        ),
        'business_name' => array(
            'required' => array(
                'rule' => 'notBlank',
                'message' => 'Business Name is required'  
            )
        ),
        'document' => array(
            'required' => array(
                'rule' => 'notBlank',
                'message' => 'Document is required'  
            )
        ),        
        'pname' => array(
            'required' => array(
                'rule' => 'notBlank',
                'message' => 'Name is required'  
            )
        ),
        'pemail' => array(
            'required' => array(
                'rule' => 'notBlank',
                'message' => 'Please enter a Valid Email Id'  
            )
        ),
        'pOfc_phone' => array(
            'required' => array(
                'rule' => 'notBlank',
                'message' => 'Please enter a Phone Number'  
            )
        ),
        'pdesignation' => array(
            'required' => array(
                'rule' => 'notBlank',
                'message' => 'Designation is Required'  
            )
        ),

    );

} 


?>

1 个答案:

答案 0 :(得分:1)

如果您的图片字段名称为 image_name ,则您未在 $ this-&gt; request-&gt; data 数组中添加图片名称。然后添加此行

 $this->request->data['User']['image_name'] = $this->data['Document']['submittedfile']['name']

之后

$this->request->data['User']['password'] = AuthComponent::password($this->request->data['User']['password']); 

然后代码看起来像

$this->request->data['User']['password'] = AuthComponent::password($this->request->data['User']['password']); 
$this->request->data['User']['image_name'] = $this->data['Document']['submittedfile']['name'];