前提・実現したいこと
<input type="file">で選択した画像をcanvasに縮小してプレビュー、それをjavascriptでblobデータで送信、phpでアップロードしたいです。
発生している問題・エラーメッセージ
ajaxにて縮小ファイル送信、受け取り側のphpでアップロードはできるのですが、元のinputで選択した縮小前の画像も一緒にアップロードされてしまいます。
該当のソースコード
HTML
1<!--new.php--> 2<form method="POST" enctype="multipart/form-data" action="done.php"> 3<input type="file" name="image" accept="image/*"> 4<input id="send" type="submit" value="登録"> 5</form>
javascript
1//new.php内に記述 2$('#send').click(function(){ 3if(!file || !blob) { //fileは選択されるファイル、blobは<canvas>に描画された縮小済みのblobデータ 4return; 5} 6 7var fd = new FormData(); 8fd.append("image", blob); 9for(item of fd) console.log(item); 10$.ajax({ 11url: 'done.php', 12type: 'POST', 13dataType: 'json', 14data: fd, 15processData: false, 16contentType: false 17}) 18 19.done(function( data, textStatus, jqXHR ) { 20 21}) 22.fail(function( jqXHR, textStatus, errorThrown ) { 23 24}); 25
php
1//done.php 2<?php 3header("Content-type: text/html; charset=utf-8"); 4$tmpName = $_FILES['image']['tmp_name']; 5$mime = $_FILES['image']['type']; 6 7if($mime == 'image/jpeg' || $mime == 'image/pjpeg'){ 8$ext = '.jpg'; 9$image1 = imagecreatefromjpeg($tmpName); 10} elseif($mime == 'image/png' || $mime == 'image/x-png'){ 11$ext = '.png'; 12$image1 = imagecreatefrompng($tmpName); 13} elseif($mime == 'image/gif'){ 14$ext = '.gif'; 15$image1 = imagecreatefromgif($tmpName); 16} else { 17return false; 18} 19$filename = sha1(microtime() . $_SERVER['REMOTE_ADDR'] . $tmpName) . $ext; 20$dir = 'image/'; 21$uploadfile = $dir . $filename; 22if ($_FILES['image']){ 23$uploadfile = $dir . $filename; 24move_uploaded_file($_FILES['image']['tmp_name'],$uploadfile); 25}
試したこと
Javascriptのfd.append("image", blob);のimageを別名に変えるとアップロードはできてましたがNotice: Undefined index: image in ~ とエラーがでました。
補足情報
for(item of fd) console.log(item);のchromeでのコンソール表示↓
(2) ["image", File]
0: "image"
1: File {name: "blob", lastModified: 1583374717041, lastModifiedDate: Thu Mar 05 2020 11:18:37 GMT+0900 (日本標準時), webkitRelativePath: "", size: 5591, …}
length: 2
proto: Array(0)
回答2件
あなたの回答
tips
プレビュー