現在の言語: 日本語 |
ファイルアップロード |
ajax |
[test6.html(javascript)]
async function uploadFile() {
const fileInput = document.getElementById('file-input');
const result = document.getElementById('result');
const uploadedImage = document.getElementById('image');
const file = fileInput.files[0];
if (!file) {
result.textContent = 'ファイルが選択されていません。';
return;
}
result.textContent = 'アップロード中...';
// FormDataオブジェクトを作成し、ファイルを追加します
// 'image'というキー名でPHPに送信します。
const formData = new FormData();
formData.append('image', file);
try {
// Fetch APIでPOSTリクエストを送信します
const response = await fetch('./img/test6.php', {
method: 'POST',
body: formData // FormDataをそのままbodyに指定します
});
if (!response.ok) {
throw new Error('サーバーエラーが発生しました。');
}
const json = await response.json();
if (json.status === 'success') {
result.textContent = 'アップロード成功: ' + json.message;
uploadedImage.src = json.file_url;
uploadedImage.style.display = 'block';
} else {
result.textContent = 'アップロード失敗: ' + json.message;
}
} catch (error) {
console.error('エラー:', error);
result.textContent = '通信エラーまたはサーバーエラーが発生しました。';
}
}
const fileInput = document.getElementById('file-input');
const fileContentElement = document.getElementById('file-content');
const image = document.getElementById('image');
image.style.display = "none";
let fileType = 0;//[0]not image [1]image
fileInput.addEventListener('change', (event) =>
{
const file = event.target.files[0];
if (!file)
{
return;
}
const reader = new FileReader();
reader.onload = (e) => {
const content = e.target.result;
if(fileType == 0)
{
fileContentElement.textContent = content;
fileContentElement.style.display = "block";
image.style.display = "none";
}
else
{
fileContentElement.textContent = "";
image.src = content;
fileContentElement.style.display = "none";
image.style.display = "block";
}
};
reader.onerror = (e) => {
console.error('it occur error to load file.', e);
fileContentElement.textContent = 'it cannot read file.';
};
if(file.type.startsWith("image/"))
{
fileType = 1;
reader.readAsDataURL(file, 'UTF-8');
}
else
{
fileType = 0;
reader.readAsText(file);
}
});
[test6.php]
header('Content-Type: application/json; charset=UTF-8');
$response = [];
$uploadDir = 'uploads/'; // 保存先ディレクトリ
if (!is_dir($uploadDir)) {
mkdir($uploadDir, 0755, true);
}
if (isset($_FILES['image']) && $_FILES['image']['error'] === UPLOAD_ERR_OK) {
$fileTmpPath = $_FILES['image']['tmp_name'];
$fileName = basename($_FILES['image']['name']);//パスを除くファイル名を取得
$fileNameCmps = explode(".", $fileName);
$fileExtension = strtolower(end($fileNameCmps));
$newFileName = md5(time() . $fileName) . '.' . $fileExtension;
$destPath = $uploadDir . $newFileName;
$allowedfileExtensions = array('jpg', 'png', 'gif', 'jpeg');
if (in_array($fileExtension, $allowedfileExtensions)) {
// ファイルを一時ディレクトリから指定の場所に移動
if (move_uploaded_file($fileTmpPath, $destPath)) {
$response['status'] = 'success';
$response['message'] = 'ファイルが正常にアップロードされました。';
//$response['file_url'] = $destPath; // ブラウザからアクセスできるURL
$response['file_url'] = 'img/' . $destPath;
} else {
$response['status'] = 'error';
$response['message'] = 'ファイルの移動に失敗しました。ディレクトリの書き込み権限を確認してください。';
}
} else {
$response['status'] = 'error';
$response['message'] = '許可されていないファイル形式です。';
}
} else {
$response['status'] = 'error';
$response['message'] = 'ファイルアップロードエラー。';
}
// JSONを返す
echo json_encode($response);
[test6.html(javascript)]
async function uploadFile() {
const fileInput = document.getElementById(‘file-input’);
const result = document.getElementById(‘result’);
const uploadedImage = document.getElementById(‘image’);
const file = fileInput.files[0];
if (!file) {
result.textContent = ‘No file selected.’;
return;
}
result.textContent = ‘Uploading...’;
// Create a FormData object and add the file
// Send it to PHP with the key name ‘image’.
const formData = new FormData();
formData.append(‘image’, file);
try {
// Send POST request using Fetch API
const response = await fetch(‘./img/test6.php’, {
method: ‘POST’,
body: formData // Pass FormData directly as body
});
if (!response.ok) {
throw new Error(‘Server error occurred.’);
}
const json = await response.json();
if (json.status === ‘success’) {
result.textContent = ‘Upload successful: ’ + json.message;
uploadedImage.src = json.file_url;
uploadedImage.style.display = ‘block’;
} else {
result.textContent = ‘Upload failed: ’ + json.message;
}
} catch (error) {
console.error(‘Error:’, error);
result.textContent = ‘A communication error or server error occurred.’;
}
}
const fileInput = document.getElementById(‘file-input’);
const fileContentElement = document.getElementById(‘file-content’);
const image = document.getElementById(‘image’);
image.style.display = “none”;
let fileType = 0; // [0] not image [1] image
fileInput.addEventListener(‘change’, (event) =>
{
const file = event.target.files[0];
if (!file)
{
return;
}
const reader = new FileReader();
reader.onload = (e) => {
const content = e.target.result;
if(fileType == 0)
{
fileContentElement.textContent = content;
fileContentElement.style.display = “block”;
image.style.display = “none”;
}
else
{
fileContentElement.textContent = “”;
image.src = content;
fileContentElement.style.display = “none”;
image.style.display = “block”;
}
};
reader.onerror = (e) => {
console.error(‘An error occurred while loading the file.’, e);
fileContentElement.textContent = ‘The file could not be read.’;
};
if(file.type.startsWith(“image/”))
{
fileType = 1;
reader.readAsDataURL(file, ‘UTF-8’);
}
else
{
fileType = 0;
reader.readAsText(file);
}
});
[test6.php]
header(‘Content-Type: application/json; charset=UTF-8’);
$response = [];
$uploadDir = ‘uploads/’; // Destination directory
if (!is_dir($uploadDir)) {
mkdir($uploadDir, 0755, true);
}
if (isset($_FILES[‘image’]) && $_FILES[‘image’][‘error’] === UPLOAD_ERR_OK) {
$fileTmpPath = $_FILES[‘image’][‘tmp_name’];
$fileName = basename($_FILES[‘image’][‘name’]); // Get filename without path
$fileNameCmps = explode(“.”, $fileName);
$fileExtension = strtolower(end($fileNameCmps));
$newFileName = md5(time() . $fileName) . ‘.’ . $fileExtension;
$destPath = $uploadDir . $newFileName;
$allowedfileExtensions = array(‘jpg’, ‘png’, ‘gif’, ‘jpeg’);
if (in_array($fileExtension, $allowedfileExtensions)) {
// Move file from temporary directory to specified location
if (move_uploaded_file($fileTmpPath, $destPath)) {
$response[‘status’] = ‘success’;
$response[‘message’] = ‘File uploaded successfully.’;
//$response[‘file_url’] = $destPath; // URL accessible from the browser
$response[‘file_url’] = ‘img/’ . $destPath;
} else {
$response[‘status’] = ‘error’;
$response[‘message’] = ‘Failed to move the file. Please check the directory's write permissions.’;
}
} else {
$response[‘status’] = ‘error’;
$response[‘message’] = ‘Unsupported file format.’;
}
} else {
$response[‘status’] = ‘error’;
$response[‘message’] = ‘File upload error.’;
}
// Return JSON
echo json_encode($response);
| HTTPメソッド | HTTPリクエストのボディ |
| データの形式 | multipart/form-data (バイナリを含む) |
| データの構築 | FormData API |
| 主な用途 | テキストや画像およびファイルなどの大容量をアップロード |
| 著作権情報 |
| ホームページおよプリ等に掲載されている情報等については、いかなる保障もいたしません。 ホームページおよびアプリ等を通じて入手したいかなる情報も複製、販売、出版または使用させたり、 または公開したりすることはできません。 当方は、ホームページおよびアプリ等を利用したいかなる理由によっての障害等が発生しても、 その結果ホームページおよびアプリ等を利用された本人または他の第三者が被った損害について 一切の責任を負わないものとします。 |