大家好我正在尝试将图像保存到文件系统,然后将文件路径保存到数据库。
我的控制器
<?php
class ProductsController extends AppController {
public function add() {
if ($this->request->is('post')) {
if (!empty($this->request->data)) {
$this->Product->create();
$this->Product->save($this->request->data['post']);
}
}
}
}
我的观看代码:
<div class="add_ondemand">
<h1>Add Post</h1>
<?php
echo $this->Form->create('post');
echo $this->Form->input('name', array('placeholder'=>'name'));
echo $this->Form->textarea('description', array('placeholder'=>'description'));
echo $this->Form->input('director', array('placeholder'=>'director'));
echo $this->Form->input('cast', array('placeholder'=>'cast'));
echo $this->Form->input('release_date', array('placeholder'=>'release date','id'=>'datepicker', 'type'=>'text'));
echo $this->Form->input('Product.File',array('type' => 'file'));
echo $this->Form->end('Save Post');
?>
</div>
<script>
$(function() {
$( "#datepicker" ).datepicker();
});
</script>
非常感谢任何帮助
答案 0 :(得分:3)
将此用于Product.php模型文件.......
public $validate = array(
'photo_name' => array(
'uploadError' => array(
'rule' => 'uploadError',
'message' => 'Something went wrong with the file upload',
'required' => FALSE,
'allowEmpty' => TRUE,
),
'photoSize' => array(
'rule' => array('fileSize','<=','2MB'),
'message' => 'Photo size must be less then 2MB.',
'required' => FALSE,
'allowEmpty' => TRUE,
),
'mimeType' => array(
'rule' => array('mimeType', array('image/gif','image/png','image/jpg','image/jpeg')),
'message' => 'Invalid file, only images allowed',
'required' => FALSE,
'allowEmpty' => TRUE
),
'processUpload' => array(
'rule' => 'processUpload',
'message' => 'Something went wrong processing your file',
'required' => FALSE,
'allowEmpty' => TRUE,
'last' => TRUE,
)
)
);
public $uploadDir = 'img/user_photos';
/**
* Process the Upload
* @param array $check
* @return boolean
*/
public function processUpload($check=array()) {
// deal with uploaded file
if (!empty($check['photo_name']['tmp_name'])) {
// check file is uploaded
if (!is_uploaded_file($check['photo_name']['tmp_name'])) {
return FALSE;
}
// build full filename
$filename = WWW_ROOT . $this->uploadDir . DS . String::uuid().'.'.pathinfo($check['photo_name']['name'], PATHINFO_EXTENSION);
// @todo check for duplicate filename
// try moving file
if (!move_uploaded_file($check['photo_name']['tmp_name'], $filename)) {
return FALSE;
// file successfully uploaded
} else {
// save the file path relative from WWW_ROOT e.g. uploads/example_filename.jpg
$this->data[$this->alias]['filepath'] = str_replace(DS, "/", str_replace(WWW_ROOT.IMAGES_URL, "", $filename));
}
}
return TRUE;
}
/**
* Before Save Callback
* @param array $options
* @return boolean
*/
public function beforeSave($options = array()) {
// a file has been uploaded so grab the filepath
if (!empty($this->data[$this->alias]['filepath'])) {
$this->data[$this->alias]['photo_name'] = $this->data[$this->alias]['filepath'];
}
return parent::beforeSave($options);
}
public function beforeValidate($options = array()) {
// ignore empty file - causes issues with form validation when file is empty and optional
if (!empty($this->data[$this->alias]['photo_name']['error']) && $this->data[$this->alias]['photo_name']['error']==4 && $this->data[$this->alias]['photo_name']['size']==0) {
unset($this->data[$this->alias]['photo_name']);
}
parent::beforeValidate($options);
}
好吧,这不是我的代码,我忘记了我得到它的来源。