5

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

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

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

3 に答える 3

9

本文ではなく、応答のヘッダーのみをレンダリングするには、

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

と同じredirect()

ドキュメント: http: //li3.me/docs/lithium/action/Controller :: render

于 2012-02-04T10:33:30.570 に答える
0

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

最初のアプローチは、自動レンダリングをオフにすることです。

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

2番目のアプローチは、 HTTPAcceptsヘッダーを送信して「コンテンツタイプのネゴシエーション」を使用することです。

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

コントローラのレンダリング方法を設定する方法について詳しくは、こちらをご覧ください。

于 2012-02-03T21:35:05.980 に答える
0

これを修正するには、コントローラーアクションに次の行を追加する必要があります。

$this->_render['head'] = true;
于 2014-08-14T09:47:45.000 に答える