Subir imagen, ejemplo bootstrap

Ejemplo HTML

<form action="{$fsc->url()}" enctype="multipart/form-data" method="post" class="form">
   <input type="hidden" name="referencia" value="{$fsc->articulo->referencia}"/>
   <input type="hidden" name="imagen" value="TRUE"/>
   <div class="modal fade" id="modal_articulo_imagen">
      <div class="modal-dialog">
         <div class="modal-content">
            <div class="modal-header">
               <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
               <h4 class="modal-title">Imagen</h4>
            </div>
            <div class="modal-body">
               {if condition="$fsc->articulo->imagen_url()"}
               <div class="thumbnail">
                  <img src="{$fsc->articulo->imagen_url()}" alt="{$fsc->articulo->referencia}"/>
               </div>
               {else}
               <div class="form-group">
                  Selecciona una imagen en formato PNG de tamaño inferior a 1MB.<br/>
                  <input type="file" name="fimagen" accept="image/gif, image/jpeg, image/png"/>
               </div>
               {/if}
            </div>
            <div class="modal-footer">
               {if condition="$fsc->articulo->imagen_url()"}
               <a class="btn btn-sm btn-danger" href="{$fsc->url()}&delete_img=TRUE">
                  <span class="glyphicon glyphicon-trash"></span> &nbsp; Eliminar
               </a>
               {else}
               <button class="btn btn-sm btn-primary" type="submit" onclick="this.disabled=true;this.form.submit();">
                  <span class="glyphicon glyphicon-floppy-disk"></span> &nbsp; Guardar
               </button>
               {/if}
            </div>
         </div>
      </div>
   </div>
</form>

Ejemplo PHP controler

<?php

        
      }
      else if( isset($_POST['imagen']) )
      {
         $this->articulo = $articulo->get($_POST['referencia']);
         if(is_uploaded_file($_FILES['fimagen']['tmp_name']) AND $_FILES['fimagen']['size'] <= 1024000)
         {
            $this->articulo->set_imagen( file_get_contents($_FILES['fimagen']['tmp_name']) );
            if( $this->articulo->save() )
               $this->new_message("Imagen del articulo modificada correctamente");
            else
               $this->new_error_msg("¡Error al guardar la imagen del articulo!");
         }
      }
      else if( isset($_GET['delete_img']) )
      {
         $this->articulo = $articulo->get($_GET['ref']);
         $this->articulo->set_imagen(NULL);
         if( $this->articulo->save() )
            $this->new_message("Imagen del articulo eliminada correctamente");
         else
            $this->new_error_msg("¡Error al eliminar la imagen del articulo!");