2012-02-03 9 views
5

uso uploadify para mi proceso de carga. El problema es que después de cada carga, el litio intenta mostrar la vista del controlador. En mi caso uploadify.html.php. ¿Cómo puedo desactivar este comportamiento y simplemente devolver un 200 OK?Desactivar el proceso de renderizado en litio

Mi código del controlador:

class UploadController extends \app\controllers\AppController { 

public function index() {} 

public function uploadify() { 
    Logger::write('info', 'start upload'); 

    if (!empty($this->request->data)) { 
     $fileData = $this->request->data['Filedata']; 
     $error = $fileData['error']; 
     if($error == UPLOAD_ERR_OK) { 
      // everything ok 
      $tempFile = $fileData['tmp_name']; 
      $targetPath = $this->request->env('DOCUMENT_ROOT') . $fileData['folder'] . '/'; 
      $targetFile = str_replace('//','/',$targetPath) . $fileData['name']; 
      move_uploaded_file($tempFile, $targetFile); 
      Logger::write('info', 'upload file successfull to ' . $targetFile); 
     } else if($error == UPLOAD_ERR_INI_SIZE || $error == UPLOAD_ERR_FORM_SIZE) { 
      // file size to large 
      Logger::write('error', 'file to large ' . $fileData['Filename']); 
     } else if($error == UPLOAD_ERR_PARTIAL) { 
      // only partial uplopad 
      Logger::write('error', 'uploaded partial ' . $fileData['Filename']); 
     } else if($error == UPLOAD_ERR_NO_FILE) { 
      // no file uploaded 
      Logger::write('error', 'couldn\'t upload ' . $fileData['Filename']); 
     } else { 
      Logger::write('error', 'Unknown error code ' . $error); 
     } 
    } else { 
     Logger::write('error', 'no form data'); 
    } 
} 
} 

Respuesta

9

Para sólo procesa las cabeceras de la respuesta, no el cuerpo, ajuste

$this->render(array('head' => true)) 

mismo con redirect()

Docs: http://li3.me/docs/lithium/action/Controller::render

+0

para cargarlo es importante para devolver algo -> http://stackoverflow.com/questions/1399654/oncomplete-and-oncompleteall-events-failing-to-fire-when-using-uploadify – Mewel

0

usted puede ir sobre esto en una de dos maneras.

El primer enfoque es apagar la prestación de auto:

class MyController extends \lithium\action\Controller { 
    public function __construct(array $config = array()) { 
    $defaults = array('render' => array('auto' => false)); 
    return parent::__construct($config + $defaults); 
    } 
} 

El segundo enfoque sería el uso de "tipo de contenido negociación" mediante el envío de un HTTP Accepts header:

class MyController extends \lithium\action\Controller { 
    public function __construct(array $config = array()) { 
    $defaults = array('render' => array('negotiate' => true)); 
    return parent::__construct($config + $defaults); 
    } 
} 

Usted puede leer más acerca cómo configurar cómo el controlador renderiza here.

+0

thx, pero esto funciona solo para toda la clase tengo otros métodos que necesitan el proceso de renderizado. si hay algo basado en el método? Si no, tengo que crear otro controlador. – Mewel

0

Para solucionar este problema, sólo tiene que añadir siguiente línea a su acción de controlador:

$this->_render['head'] = true; 
Cuestiones relacionadas