我的模型正在进行以下验证
'image' => array(
'uploadErrror' => array(
'rule' => 'uploadError',
'message' => 'The image upload failed.',
'allowEmpty'=> True
),
'mimeType' => array(
'rule' => array('mimeType',array('image/gif','image/png','image/jpeg')),
'message' => 'Please only upload images (gif, png, jpg).',
'allowEmpty' => true
),
'fileSize'=> array(
'rule' => array('fileSize', '<=', '1MB'),
'message' => 'Image must be less than 1MB.',
'allowEmpty' => true
),
'processImageUpload' => array(
'rule' => 'processImageUpload',
'message' => 'Unable to process image upload.',
'allowEmpty'=> true
) )
public function processImageUpload($check = array()){
if(!is_uploaded_file($check['image']['tmp_name']))
{
return FALSE;
}
$targetdir = WWW_ROOT . 'img' . DS . 'uploads' . DS . $check['image']['name'];
if(!move_uploaded_file($check['image']['tmp_name'],$targetdir))
{
return false;
}
$this->data[$this->alias]['image'] = 'uploads' . DS . $check['image']['name'];
return true;
}
我收到的错误如下,我也启用了调试2但没有提供进一步的说明。
无法确定mimetype。
我已尝试取消评论
延长= php_fileinfo.dll
并完全重新启动了WAMPServer,但它仍无效。
同样在控制器类中,我有以下代码用于添加
public function add() {
if ($this->request->is('post')) {
$this->Image->create();
$data = $this->request->data['Image'];
if (!$data['image']['name'])
{
$this->Session->setFlash(__('There was no image provided.'));
}
if ($this->Image->save($data)) {
$this->Session->setFlash(__('The image has been saved.'));
return $this->redirect(array('action' => 'index'));
} else {
$this->Session->setFlash(__('The image could not be saved. Please, try again.'));
}
}
}
添加查看代码
<?php echo $this->Form->create('Image',array('type'=>'file')); ?>
<fieldset>
<legend><?php echo __('Add Image'); ?></legend>
<?php
echo $this->Form->input('description');
echo $this->Form->input('image',array('type'=>'file'));
echo $this->Form->input('property_id');
?>
</fieldset>
<?php echo $this->Form->end(__('Submit')); ?>
任何建议都将不胜感激。
答案 0 :(得分:1)
不确定这是否是整个问题,但是:
'mimeType' => array(
'rule' => array('mimeType',array('image/gif','image/png','image/jpeg')),
'message' => 'Please only upload images (gif, png, jpg).',
'alllowEmpty' => true
),
'alllowEmpty'有3个L'。
答案 1 :(得分:0)
没有检查mime而只是扩展的关闭解决方案是
$ext = substr(strtolower(strrchr($check['image']['name'], '.')), 1); //get the extension
$arr_ext = array('jpg', 'jpeg', 'gif'); //set allowed extensions
if (in_array($ext, $arr_ext)) {
//upload code
}
else
{
return 'Please only upload images (gif, png, jpg).';
}
答案 2 :(得分:0)
一般情况下,Cake希望找到要在原始位置指定的位置检查的文件
$this->data[$this->alias]['image']['tmp_name'] // or whatever is the name of the field
验证期间 。因此请确保...['tmp_name']
指向有效位置(现有上传文件)。
原始回答:
我认为问题出在这里(我也有类似的问题):
$this->data[$this->alias]['image'] = 'uploads' . DS . $check['image']['name'];
移动上传的文件后,您将路径信息分配给$this->data[$this->alias]['image']
,但CakePHP认为有一个数组包含有关上传文件的所有信息。这就是整个验证失败的原因。
具体来说,CakePHP将尝试在tmp_name
中查找$this->data[$this->alias]['image']
,但它不会在那里找到它,之后它将尝试确定mime类型为“nothing”并且它将失败
答案 3 :(得分:0)
将文本; extension = php_fileinfo.dll 更改为 php.ini 上的 extension = php_fileinfo.dll 这个对我有用。希望它能帮到你们。我正在使用xampp。