文件上传网址

时间:2020-10-07 10:33:23

标签: php wordpress wordpress-plugin-creation

我正在尝试使用AJAX将画布图像上传到我的服务器,AJAX正常工作,但是当我给服务器提供URL时,它将对其进行转换并在URL中的每个文件夹中添加反斜杠,但我看不到如何。我需要它停止将这些反斜杠添加到字符串中。

if(isset($_POST['saveCanvas']) && $_POST['saveCanvas'] == "1"){
    $img = $_POST['canvasURL'];
    $img = str_replace('data:image/png;base64','',$img);
    $img = str_replace(' ', '+',$img);
    $data = base64_decode($img);
    $file = "https://example.com/wp-content/plugins/my-plugin/images" . uniqid() . '.png';
    $success = file_put_contents($file, $data);

    $return = [];
    $return['success'] = 1;
    $return['message'] = 'Image Uploaded!  ' . $file;

    echo json_encode($return);
}

这是我希望输出看起来像https://example.com/wp-content/plugins/my-plugin/images的样子,这是当前输出https:\/\/example.com\/wp-content\/plugins\/my-plugin\/images5f7d97548917d.png

2 个答案:

答案 0 :(得分:2)

如果我没记错的话,这是因为您使用JSON编码了返回数组。您是否尝试过成功返回$file

答案 1 :(得分:0)

根据您当前的问题,我建议您在php上执行此操作。

if(isset($_POST['saveCanvas']) && $_POST['saveCanvas'] == "1"){
    $img = $_POST['canvasURL'];
    $img = str_replace('data:image/png;base64','',$img);
    $img = str_replace(' ', '+',$img);
    $data = base64_decode($img);
    $file = "https://example.com/wp-content/plugins/my-plugin/images" . uniqid() . '.png';
    echo file_put_contents($file, $data) ? $file : 0;

}

这将检查文件是否已上传,并返回文件名或整数0。

当响应到达您的ajax时,ajax将检查响应。

如果其为0,则将其计为false,以便您可以这样做。

if(response){
//success code
}else{
//fail code
}

例如

alert(response ? 'Image Uploaded! '+ response : 'Failed to upload');

相关问题