.htaccessでPHPのファイルアップロードサイズの上限値を変更
2022.02.5
PHPを使用して画像(動画・PDF等)をアップロードするフォームを作成した際に、ファイル…
フォーム投稿で画像をアップロードする際に、追従式のメールフォームを作成し、コンテンツの途中の段階で送信が送れる仕組みを作成していたのだけれど、PHPでそのまま実装すると再読み込みが発生してしまい、再度コンテンツを読んでいた位置まで進める必要が出てきたので、Ajaxと組み合わせ実装した際の方法をメモ
<form action="" method="post" enctype="multipart/form-data" id="entryform">
<textarea name="text"></textarea>
<input type="file" name="newimage">
<button type="submit" id="submit">登録する</button>
</form>
<div id="result"></div>
$(function(){
$('form').on('submit', function(event) {
event.preventDefault(); // フォームのデフォルト送信を防止
var $form = $('#entryform');
var formData = new FormData($form.get(0));
$.ajax({
type: 'POST',
url: 'save.php',
data: formData,
processData: false,
contentType: false,
dataType: "json",
success: function(response) {
if (response.status === "success") {
$("#result").html("アップロード成功");
} else {
$("#result").html("エラー: " + response.message);
}
},
error: function() {
$("#result").html("エラーが発生しました。");
}
});
});
});
if($_SERVER['REQUEST_METHOD'] === 'POST'){
$uploadDir = "uploads/";
$file = $_FILES["image"];
$fileName = basename($file["name"]);
$targetFile = $uploadDir.$fileName;
$text = filter_input(INPUT_POST, "text", FILTER_SANITIZE_STRING);
if (!$text) {
echo json_encode(["status" => "error", "message" => "テキストが無効です"]);
exit;
}
if (isset($_FILES["newimage"])) {
$finfo = new finfo(FILEINFO_MIME_TYPE);
$mimeType = $finfo->file($file["tmp_name"]);
$validMimeTypes = ["image/jpeg", "image/png", "image/gif"];
if (!in_array($mimeType, $validMimeTypes)) {
echo json_encode(["status" => "error", "message" => "画像の種類が正しくありません"]);
exit;
}
// 画像サイズの制限(2MB)
if ($file["size"] > 2 * 1024 * 1024) {
echo json_encode(["status" => "error", "message" => "画像サイズは2MB以下にしてください"]);
exit;
}
// 画像を保存
move_uploaded_file($file["tmp_name"], $targetFile);
}
}
2022.02.5
PHPを使用して画像(動画・PDF等)をアップロードするフォームを作成した際に、ファイル…
2020.10.3
テキストエリア等で入力した文字の中にURLを含んでいた場合に、自動で認識してリンクタグを…
2020.12.5
メールフォームからメールを送信する際に、画像(ファイル)を添付できるようにしてほしいとの…
2024.03.30
外部ファイル(CSVファイル等)を読み込んでサイト内に表示する際に、保存時の文字コードが…
2023.12.2
ワードプレスの投稿のカテゴリー機能を、目的ごとに使い分けたいというご要望があった際に、カ…