08-27-2019, 07:17 PM
It appears that file upload validation is not working properly. I have the following:
Any pdf fails on mime type or extension validators. max size appears to work.
PHP Code:
// $Id: Notice.php,v 1.3 2019/08/27 19:36:24 dwinston Exp $
use CodeIgniter\Controller;
class Notice extends Controller
{
private $validation;
public function __construct(...$params)
{
$this->validation = \Config\Services::validation();
helper(['bnc', 'form']);
}
public function index()
{
print view('upload-notice', ['validation' => $this->validation]);
}
public function upload()
{
$messages = [
'in_re' => [
'required' => 'In Re: is required',
],
'notice' => [
'mime_in' => 'Notice must be a PDF file',
'ext_in' => 'Notice must have a pdf extension',
'max_size' => 'Notice is too large',
],
];
$rules = [
'in_re' => 'required',
'notice' => 'mime_in[notice, application/pdf]|ext_in[notice, pdf]|max_size[notice, 2048]',
];
if ($this->request->getPost('submitted') == null || ! $this->validate($rules, $messages))
print view('upload-notice', ['validation' => $this->validation]);
else {
$env = bnc_get_environment(); //bnc_helper
$path = "/BSG/data/bnc/$env/public-notices";
if (! file_exists($path)) mkdir($path, 0745, true);
$filename = time() . '.' . $_FILES['notice']['name'];
copy($_FILES['notice']['tmp_name'], "$path/$filename");
print view('upload-msg', [
'in_re' => $this->request->getPost('in_re'),
'encoded_filename' => urlencode($filename),
]);
}
}
Any pdf fails on mime type or extension validators. max size appears to work.
Simpler is always better