"Choose Image"をクリックする画像アップロードフォームがあり、ファイル選択ウィンドウが表示されます。画像を選択すると、新しく表示された「アップロード」ボタンの横にファイル名が画面に表示されます(画像ではなく、ファイル名のみ)。次に、「アップロード」をクリックして、イメージを真にアップロードしてプレビューウィンドウに表示させる必要があります。ファイルを選択した直後に画像をアップロードするには、別の「アップロード」ボタンをクリックする必要がありますか?
誰かが「画像を選択」をクリックしてアップロードしたい画像を選択すると、中間の人物が削除され、すぐに画像がアップロードされ、プレビューウィンドウに画像が表示されるように、このプロセスを凝縮したいと思います。なぜユーザーは「アップロード」をクリックしなければなりませんか?
以下に関連コードを記載しました。既存のコードを微調整してファイルを選択した直後にアップロードを行う方法はありますか?それとも、私がしたいことをするためにゼロから始めなければならないのでしょうか?
画像のアップロードフォーム:
<?php
require_once("includes/session.php");
$poolid=strtolower($_SESSION['poolid']); //lowercase it first so we get exact matches
$valid_extensions = array('jpeg', 'jpg', 'png', 'gif'); // valid extensions
if(isset($_FILES['image'])) {
$img = $_FILES['image']['name'];
$tmp = $_FILES['image']['tmp_name'];
// get uploaded file's extension
$ext = strtolower(pathinfo($img, PATHINFO_EXTENSION));
//checking if image exists for this pool and removing if so, before adding new image in its place
if(file_exists("uploads/".$poolid.".png")) {
unlink("uploads/".$poolid.".png");
}
// checks valid format
if(in_array($ext, $valid_extensions)) {
//re-size the image and make it a PNG before sending to server
$final_image = $poolid . ".png";
$path = "uploads/".strtolower($final_image);
$size = getimagesize($tmp);
$ratio = $size[0]/$size[1]; // width/height
if($ratio > 1) {
$width = 200;
$height = 200/$ratio;
}
else {
$width = 200*$ratio;
$height = 200;
}
$src = imagecreatefromstring(file_get_contents($tmp));
$dst = imagecreatetruecolor($width,$height);
imagecopyresampled($dst,$src,0,0,0,0,$width,$height,$size[0],$size[1]);
imagedestroy($src);
imagepng($dst, $path); // adjust format as needed
imagedestroy($dst);
$_SESSION['image_uploaded']="yes";
echo $path ."?".rand(1,32000);
} else {
echo 'invalid file';
}
}
?>