前提・実現したいこと
ユーザーにcanvasで画像を作成してもらい、その画像をフォームで送信してもらうプログラムを考えています。
自分なりに試したことは
1,jsを使いcanvas画像をBase64に直す
2,AjaxでPHPにPOST送信
3,PHPでbase64をデコード。一時的な画像を作成。
4,それをformのfileに代入
みたいな感じ行けるのでは?と思ったのですが「4」の方法がわかりませんでした。(*3までは動きます)
現状で望むのは「4」の方法です。
ただ、根本的にいらない作業で遠回りしてるのかもしれません。もっと簡単な方法があればそちらの答えも求めています。
どなたかお分かりになる方、知識をお借りできれば幸いです。
よろしくお願いしますm(_)m
js
1function toBase64() { 2 Base64 = canvas.toDataURL('image/png'); 3 let formData = new FormData(); 4 formData.append("Data", Base64); 5 return formData; 6} 7 8function asyncRequest(Base64){ 9 const xhr = new XMLHttpRequest(); 10 xhr.open("POST", "/test.php", true); 11 xhr.onload = function(e) { 12 if (xhr.readyState == 4 && xhr.status == 200) { 13 console.log(xhr.responseText); 14 } 15 }; 16 xhr.send(Base64); 17} 18
PHP
1define('UPLOAD_DIR', './test/'); 2$img = $_POST['Data']; 3$img = str_replace('data:image/png;base64,', '', $img); 4$img = str_replace(' ', '+', $img); 5$data = base64_decode($img); 6$file = UPLOAD_DIR . 'aa' . '.png'; 7$success = file_put_contents($file, $data); 8print $success ? $file : 'Unable to save the file.';
html
1<form> 2<input type="file" name="f" size="30" id=""> 3</form>
##追記
添付ファイルで画像確認するのが目的の1つです。base64やBlobをformに埋め込むのは出来ますが大量のサイズになるのに加えて受信時に画像確認ができないとの判断です
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/11 23:21
2020/09/12 14:03
2020/09/12 16:22