在保存POST时保存画布生成的图像导致404错误

时间:2020-04-22 作者:Timur Gafforov

我已经在wordpress帖子表单中添加了自定义功能,其中生成了画布图像,并将其传递给输入,然后我正在尝试保存它。但当我点击“更新”按钮时,我会看到404错误页面。

在函数中。我的主题php我有:

add_action( \'edit_form_advanced\', \'addHtmlToForm\' );

function addHTMLToForm(){

?>
<input type="hidden" name="myimage" id="myImage" value="" />
<canvas width="700" height="700" id="mainImage"></canvas>
<script>
var img = new Image;
var mainCanvas = document.getElementById(\'mainImage\');

img.crossOrigin = "anonymous";

img.onload = function(){

    ctx.drawImage(img,0,0); 
    jQuery(\'#yImage\').val(mainCanvas.toDataURL(\'image/png\'));
};

img.src = \'https://source.to.my.image.png\';
</script>
<?php
}
然后通过函数保存数据

add_action( \'save_post\', \'saveExtraFields\', 10, 3);

function saveExtraFields($ID){
    global $post, $wpdb;

    $mapFileName = false;

    if(isset($_POST[\'myimage\']) && $_POST[\'myimage\'] != \'\'){
        $uploadDir = $_SERVER[\'DOCUMENT_ROOT\'].\'/uploads/products/\';

        $mapFileName = "{$ID}.png";

        $img = $_POST[\'myimage\'];
        $img = str_replace(\'data:image/png;base64,\', \'\', $img);
        $img = str_replace(\' \', \'+\', $img);
        $data = base64_decode($img);
        $file = $uploadDir.$mapFileName;
        file_put_contents($file, $data);
    }

}

1 个回复
SO网友:Timur Gafforov

碰巧的是,这是Firefox的一个问题——无论是经典Firefox还是Firefox开发者版。其他浏览器工作正常。为什么它把我推到网站的404页,对我来说仍然是个谜。

相关推荐

Posts order in grid

在我的主题中,我有一个显示特色帖子的网格。这张我很喜欢,但帖子的顺序不是我喜欢的:https://i.imgur.com/GzGwRXl.jpg在上面链接的照片上,你可以在红色矩形中看到帖子的当前顺序,下面是绿色矩形,用于说明我想如何显示它们。最大的网格将用于最新发布的帖子。在主题中显示此内容的代码在此处(如果需要,我可以发送包含代码的整个文件):function inner($posts, $td_column_number = \'\') { $buffy = \'\';&#