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 时,都会创建一个新的数据库行。由于我没有创建函数,我想不知何故 jquery 无意中调用了这个函数:

public function upload(){

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

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

但是,我对此表示怀疑,因为即使我删除了对 create 函数的所有引用,仍然会添加行。

那么为什么会发生这种情况,我应该如何解决呢?我怀疑 jquery 代码以某种方式调用了我的所有函数,并且我需要在其他任何获取 post 数据的函数周围放置一个 if 块。有人告诉我,这不应该是这样,也许蛋糕的路由是罪魁祸首。或者,我可能错过了 cake 文档中的某些内容 - 也许 cake 设置为为每个发布请求创建一个新的 DB 行,我需要告诉它不要以某种方式。

4

0 回答 0