Hi there.
I want to know what file type I'm uploading. In fact, I know what it is, it's an image/jpeg, but for some reason it's not coming up in my $_FILES array.
This is the output when I print_r(FILES)
As you can see, plainly from the name of the file, it's an image/jpeg, but can anyone tell me why the [type] element is empty?Array ( [image] => Array ( [name] => Az 036_small.jpg [type] => [tmp_name] => [error] => 2 [size] => 0 ) )
Here is the code for my upload class if it helps:
Code:<?php class sw_Upload { protected $_uploaded = array(); protected $_destination; protected $_max = 51200; protected $_messages = array(); protected $_permitted = array('image/gif', 'image/jpeg', 'image/pjpeg', 'image/png'); protected $_renamed = false; public function __construct($path) { if (!is_dir($path) || !is_writable($path)) { throw new Exception("$path must be a valid, writable directory."); } $this->_destination = $path; $this->_uploaded = $_FILES; print_r($_FILES); } public function move() { $field = current($this->_uploaded); $OK = $this->checkError($field['name'], $field['error']); if ($OK) { echo '<br />'.$_FILES['image']['size']; $sizeOK = $this->checkSize($field['name'], $field['size']); $typeOK = $this->checkType($field['name'], $field['type']); if ($sizeOK && $typeOK) { $success = move_uploaded_file($field['tmp_name'], $this->_destination . $field['name']); if ($success) { $this->_messages[] = $field['name'] . ' uploaded successfully'; } else { $this->_messages[] = 'Could not upload ' . $field['name']; } } } } public function getMessages() { return $this->_messages; } protected function checkError($filename, $error) { switch ($error) { case 0: return true; case 1: case 2: $this->_messages[] = "$filename exceeds maximum size: " . $this->getMaxSize(); return true; case 3: $this->_messages[] = "Error uploading $filename. Please try again."; return false; case 4: $this->_messages[] = 'No file selected.'; return false; default: $this->_messages[] = "System error uploading $filename. Contact webmaster."; return false; } } public function getMaxSize() { return number_format($this->_max/1024, 1) . 'kB'; } protected function checkSize($filename, $size) { if ($size == 0) { return false; } elseif ($size > $this->_max) { $this->_messages[] = "$filename exceeds maximum size: " . $this->getMaxSize(); return false; } else { return true; } } protected function checkType($filename, $type) { if (!in_array($type, $this->_permitted)) { $this->_messages[] = "$filename is not a permitted type of file."; return false; } else { return true; } }


Reply With Quote
Bookmarks