我在视图中有这个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块。我被告知这不应该是这种情况,也许蛋糕的路由应该归咎于此。或者,我可能错过了蛋糕文档中的一些内容 - 也许蛋糕被设置为每个帖子请求创建一个新的数据库行,我需要告诉它不要以某种方式。