Okay, let's take a step back here.
As much as I love spaghetti, I don't enjoy trying to read spaghetti code.
1. These two lines
$image = new cmsImages;
$image->storeFormValues( $_POST );
call the class construct twice. storeFormValues() is not needed, instead it should read.
$image = new cmsImages( $_POST );
2. The image information is stored in $_FILES not $_POST, which is why file_get_contents($_FILES['file']['tmp_name']) holds the correct data.
3. Read my first post in this thread because I state the reasons why your logic is flawed.
4. But since it seems like you don't want to listen to reason and just want an answer, your construct should read something like this:
public function __construct( $post_data = array(), $file_data = array() ) {
if ( isset( $post_data['img_id'] ) ) $this->img_id = (int) $data['img_id'];
if ( isset( $post_data['img_name'] ) ) $this->img_name = preg_replace ( "/[^\.\,\-\_\'\"\@\?\!\:\$ a-zA-Z0-9()]/", "", $data['img_name'] );
if ( isset( $file_data['file'] ) ) $this->img_blob = file_get_contents($file_data['file']['tmp_name']);
then you would pass the construct its arguments like so:
$image = new cmsImage( $_POST, $_FILES );
I feel so dirty writing this.