1

我正在开发一个 cakephp 项目(Croogo 版本)。用户可以在此处添加附件到该订单。但我面临着附件的问题。我正在使用此插件添加附件。这在我的本地系统上对我来说很好,但会在在线网站上抛出错误。

这是错误

发生内部错误。

我不知道为什么会这样。这个你能帮我吗。提前致谢

4

1 回答 1

0

我通过从用于上传和检查验证的模型中评论验证来解决。这是我的代码:

var $validate = array( 'order_id' => array( 'numeric' => array( 'rule' => array('numeric'), 'message' => 'Order Id must be number', //'allowEmpty' => false, //'required' => false, //'last' => false, // 在这条规则之后停止验证 //'on' => 'create', // 将验证限制为 'create' 或 ' update' 操作 ), ) /* 'attachment' => array( 'uploadError' => array( 'rule' => 'uploadError', 'message' => '封面图片上传失败。','allowEmpty' => TRUE, ), 'mimeType' => array('rule' => array('mimeType', array('image/gif', 'image/png', 'image/jpg', 'image/ jpeg'、'image/bmp'、'image/x-icon'、'application/pdf'、'application/powerpoint'、'application/msword'、'application/rtf'、'text/plain'、'application/ vnd.openxmlformats-officedocument.wordprocessingml.document'、'application/vnd.openxmlformats-officedocument.presentationml.presentation'、'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'、'application/vnd.oasis.opendocument.text' ,'application/vnd.oasis.opendocument.spreadsheet','application/vnd.oasis.opendocument.演示文稿','application/vnd.oasis.opendocument.image')), 'message' => '请仅上传 Word 文档、Powerpoints、Adobe Reader 文件 (PDF)、图像。', 'allowEmpty' => TRUE, ) , 'fileSize' => array( 'rule' => array('fileSize', '<=', '7MB'), 'message' => '封面图片必须小于7MB。', 'allowEmpty' => TRUE, ), 'processCoverUpload' => array('rule' => 'processCoverUpload', 'message' => '无法处理封面图片上传。', 'allowEmpty' => TRUE, ),), */ );

以及上传文件的功能。

公共函数 processCoverUpload($check = array()) { $remove_these = array(' ','`','"','\'','\','/'); $file_name = $check['附件']['name']; $file_name = str_replace($remove_these, '', $file_name); $path_parts = pathinfo($file_name); $file_name = $path_parts['filename'].'_'.time() .'.'.$path_parts['extension']; $directory = date('Y/m/'); $upload_path = 'uploads'.DS.'attachments'.DS.$directory; $upload_dir = WWW_ROOT.$上传路径;

    if(!file_exists($upload_dir)) mkdir($upload_dir, 0755, true);

    if (!is_uploaded_file($check['attachement']['tmp_name'])) {
        return FALSE;
    }
    if (!move_uploaded_file($check['attachement']['tmp_name'], $upload_dir.$file_name)) {
        return FALSE;
    }
    $this->data[$this->alias]['attachement'] = $upload_path.$file_name;

    return true;
}

我评论了上述内容并在我的控制器中进行了验证。

于 2014-01-13T08:59:56.130 回答