1

我正在尝试使用 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

4

2 回答 2

2

如果我没记错的话,这是因为您正在对返回数组进行 JSON 编码。你有没有试图$file在成功后回归?

于 2020-10-07T10:39:19.400 回答
0

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

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,它将被视为假,所以你可以这样做。

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

例如

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

于 2020-10-07T10:50:19.437 回答