0

アップロード コントローラーに関連して、ビューに次の jquery コードがあります。

function screenshot(){

var dataUrl = renderer.domElement.toDataURL("image/png");
$.post("picturepicker", {dataUrl: dataUrl, uploadnumber: 2


 }

}

この関数にデータを正常に送信します。

public function picturepicker(){
        ...

if($this->request->is('post')){
        define('UPLOAD_DIR', WWW_ROOT . 'img/');  // increase validation
        $img = $_POST['dataUrl'];  // Tried $this->request['dataURL'], retrieved 'dataURL' just fine
        $upload = $_POST['uploadnumber']; // tried $this->request['uploadnumber'], did not retrieve 'uploadnumber' 
        $img = str_replace('data:image/png;base64,', '', $img);
        $img = str_replace(' ', '+', $img);
        $data = base64_decode($img);
        $file = UPLOAD_DIR . $upload . '.png';  // UPLOAD_DIR . uniqid() . '.png';
        $success = file_put_contents($file, $data);

        print $success ? $file : 'Unable to save the file.';

JavaScriptを実行するたびに新しいデータベース行が作成されることを除いて、これは正常に機能します。私は create 関数を持っていないので、どういうわけか jquery がこの関数をうっかり呼び出しているのではないかと想像します。

public function upload(){

        if ($this->request->is('post')) {

        //var_dump($this->request->data);
        $this->Upload->create(); 
        ....

ただし、作成関数へのすべての参照を削除しても行が追加されているため、疑問があります。

では、なぜこのようなことが起こるのでしょうか? どうすれば修正できますか? どういうわけかjqueryコードがすべての関数を呼び出しており、投稿データを受け取る他の関数の周りにifブロックを配置する必要があるのではないかと疑っています. これはあってはならないことであり、おそらくケーキのルーティングが原因であると言われました。または、ケーキのドキュメントで何かを見逃している可能性があります-おそらくケーキは、すべてのポストリクエストに対して新しいDB行を作成するように設定されており、何とかしないように指示する必要があります.

4

0 に答える 0