前提・実現したいこと
PHPで画像をアップロードするとアップロードした先のURLを文字列で返す処理を作成しているのですが、
返ってくる文字列に自動的にエスケープ文字が付与されてしまいます。
エスケープ文字を除去した状態で返したいのですがどうしたらよいでしょうか。
該当のソースコード
PHP
1<?php 2 header("Content-type:application/json; charset=utf8"); 3 header("Access-Control-Allow-Origin: *"); 4 5 const SERVER_URL = 'https://hogetest.com/'; 6 const SAVE_FOLDER_PATH = "image/testImage/"; 7 8 $result = ''; 9 10 // 拡張子情報の取得・セット 11 $imginfo = getimagesize($_FILES['image']['tmp_name']); 12 13 if($imginfo['mime'] == 'image/jpeg'){ $extension = ".jpg"; } 14 if($imginfo['mime'] == 'image/png'){ $extension = ".png"; } 15 if(!empty($extension)){ 16 17 $file_tmp = $_FILES['image']['tmp_name']; 18 $file_name = "img" . date("YmdHis") . "_" . $extension; 19 20 // アップロードディレクトリ指定 21 $file_save = "../" . SAVE_FOLDER_PATH . $file_name; 22 23 // アップロード処理 24 try{ 25 move_uploaded_file($file_tmp, $file_save); 26 $result = SERVER_URL . SAVE_FOLDER_PATH . $file_name; 27 $result = str_replace ( "/" , "/" , $result); 28 }catch (Exception $e) { 29 // 例外処理 30 } 31 } 32 echo json_encode(stripslashes($result)); 33?>
■実行結果
"https://hogetest.com/image/testImage/imgYYYYMMDDhhmmss_uniqueid.jpg"
試したこと
コード上にもありますが、str_replace()を試しても結果は同じでした。
補足情報(FW/ツールのバージョンなど)
レンタルサーバーで実行しています。
PHPバージョン:PHP7.3.16
追記
js側での受け取り方変えたらうまくいきました。
が、なぜそのようなことが起こるのでしょうか...
Javasclipt
1/* old */ 2// let fd = new FormData($('#send-form').get(0)); 3// let str = $.ajax({ 4// url: 'sample.php', 5// type: 'POST', 6// data: fd, 7// cache: false, 8// contentType: false, 9// processData: false, 10// async: false 11// }).responseText; 12// 13// alert(str); 14 15/* new */ 16let fd = new FormData($('#send-form').get(0)); 17$.ajax({ 18 url: 'sample.php', 19 type: 'POST', 20 data: fd, 21 cache: false, 22 contentType: false, 23 processData: false, 24}).done(function(str) { 25 alert(str); 26});
回答2件
あなたの回答
tips
プレビュー