Cakephp - 使用fileupload插件进行文件上载时的内部服务器错误

时间:2014-01-10 07:08:26

标签: php cakephp file-upload croogo

我正在开发一个cakephp项目(Croogo版本)。这个用户可以在那里添加附件。但我面临着依恋的问题。我正在使用此Plugin添加附件。这在我的本地系统上适用于我,但在网站上引发错误。

这是错误

  

发生了内部错误。

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

1 个答案:

答案 0 :(得分:0)

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

  

var $ validate = array(           'order_id'=>阵列(               'numeric'=>阵列(                   'rule'=>阵列( '数字'),                   'message'=> '订单ID必须是数字',                   //'allowEmpty'=>假,                   //'required'=>假,                   //'last'=> false,//在此规则之后停止验证                   //'on'=> 'create',//将验证限制为'创建'或'更新'操作               )           )           / *           'attachement'=>阵列(               'uploadError'=>阵列(                   'rule'=> 'uploadError时',                   'message'=> '封面图片上传失败。',                   'allowEmpty'=>真正,               )               'mimeType'=>阵列(                   '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 ' '应用程序/ vnd.openxmlformats-officedocument.spreadsheetml.sheet', '应用程序/ vnd.oasis.opendocument.text', '应用程序/ vnd.oasis.opendocument.spreadsheet',' 应用程序/ vnd.oasis.opendocument .presentation”, '应用程序/ vnd.oasis.opendocument.image')),                   'message'=> '请仅上传Word文档,Powerpoint,Adobe Reader文件(PDF),图像。',                   'allowEmpty'=>真正,               )               'fileSize'=>阵列(                   'rule'=> array('fileSize','< =','7MB'),                   'message'=> '封面图片必须小于7MB。',                   'allowEmpty'=>真正,               )               'processCoverUpload'=>阵列(                   'rule'=> 'processCoverUpload',                   'message'=> “无法处理封面图片上传。”,                   'allowEmpty'=>真正,               )           ),* /       );

以及上传文件的功能。

  

public function processCoverUpload($ check = array()){           $ remove_these = array('','`',''','\'','\','/');           $ file_name = $ check ['attachement'] ['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。$ upload_path;

    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;
}

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