我正在尝试使用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
答案 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');