2012-02-03 11 views
5

アップロード処理にuploadifyを使用します。問題は、アップロードするたびにリチウムがコントローラのビューをレンダリングしようとしていることです。私の場合はuploadify.html.php。どうすればこの動作を無効にし、ただ200 OKを返すことができます。リチウムのレンダリングプロセスを無効にする

私のコントローラコード:

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'); 
    } 
} 
} 

答えて

9

は、応答ではなく、身体のヘッダは、redirect()

ドキュメントと同じ

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

を設定してレンダリングあなたのコントローラーアクション:

$this->_render['head'] = true; 
+0

アップロードするための重要なもの - > http://stackoverflow.com/questions/1399654/oncomplete-and-oncompleteall-events-failing-to-fire-when-using-uploadify – Mewel

0

次のいずれかの方法で、これについては行くことができます。

最初のアプローチは、自動レンダリングをオフにされています

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

第二のアプローチは、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); 
    } 
} 

あなたはについての詳細を読むことができますコントローラがレンダリングする方法を設定する方法here。あなただけに次の行を追加する必要があり、この問題を解決するにはhttp://li3.me/docs/lithium/action/Controller::render

+0

thxクラス全体で私はレンダリングプロセスを必要とする他のメソッドを持っています。メソッドに基づいて何かがある場合?私は他のコントローラを作成する必要がない場合。 – Mewel

関連する問題