phpで困ってます
下記のphpで、写真をサーバーにアップロードして、2種類にリサイズして保存し、ファイル名をテキストで保存しようとしてるのですが、ファイル名をテキストで保存する部分file_put_contents($name_file,$name_log);
にエラーがでます。写真はリサイズされ保存されています。何度か見直しているのですが、原因が分かりません。エラーの原因を教えていただきたいと思い、投稿しました。よろしくお願いします。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>画像ファイルアップロード</title>
</head>
<body>
<?php
// 名前保存のテキストファイル
$name_file = "name.txt";
// 名前保存のテキストファイル読み込み用の配列
$name_log = array();
// 名前保存のテキストファイルを読み込み用の配列に読み込む
if (file_exists($name_file)) { $name_log = file( $name_file ); }
// 保存画像の保存先のディレクトリ
$dir_l = 'uploads_l/';
// サムネイル画像の保存先のディレクトリ
$dir_s = 'uploads_s/';
for ( $i=0; $i<count($_FILES['filename']['tmp_name']); $i++ ) {
// ファイル名の取り出し
$file_name = $_FILES['filename']['name'][$i];
// ファイル(MIME)タイプの取り出し
$file_type = $_FILES['filename']['type'][$i];
// 一時ファイル名の取り出し
$temp_name = $_FILES['filename']['tmp_name'][$i];
// 重複しないように日付をヘッダにする
$head = date("YmdHis");
// 保存先のファイル名
$upload_name_l = $dir_l . $head ."-". $file_name;
// サムネイル画像の保存先のファイル名
$upload_name_s = $dir_s . $head ."-". $file_name;
// JPEG形式のファイルをアップロードする
if (($file_type == 'image/jpeg') || ($file_type == 'image/pjpeg')) {
// アップロード(移動)
$result = move_uploaded_file($temp_name, $upload_name_l);
if ($result) {
// アップロードの成功
// アップロードされた画像情報を取り出す
$image_size = getimagesize($upload_name_l);
// アップロードされた画像の幅と高さを取り出す
$width = $image_size[0];
$height = $image_size[1];
// 保存画像の幅と高さを決める
$width_l = 480;
$height_l = round($width_l*$height/$width);
// サムネイル画像の幅と高さを決める
$width_s = 60;
$height_s = round($width_s*$height/$width);
// アップロードされた画像を取り出す
$image = imagecreatefromjpeg($upload_name_l);
// 保存画像の大きさの画像を新規作成
$image_l = imagecreatetruecolor($width_l,$height_l);
// アップロードされた画像から保存画像を作成
$result_l = imagecopyresampled(
$image_l, $image,
0,0, 0,0,
$width_l,$height_l, $width,$height);
if ($result_l) {
// 保存画像作成成功
// 保存画像の保存
if (imagejpeg($image_l,$upload_name_l)) {
echo ' ->保存画像保存';
$add_name = $upload_name_l;
array_push($name_log, $add_name);
} else {
echo ' ->保存画像保存失敗';
}
} else {
// 保存画像作成失敗
echo ' ->保存画像作成失敗';
}
// サムネイルの大きさの画像を新規作成
$image_s = imagecreatetruecolor($width_s,$height_s);
// アップロードされた画像からサムネイル画像を作成
$result_s = imagecopyresampled(
$image_s, $image,
0,0, 0,0,
$width_s,$height_s, $width,$height);
if ($result_s) {
// サムネイル画像作成成功
// サムネイル画像の保存
if (imagejpeg($image_s,$upload_name_s)) {
echo ' ->サムネイル画像保存';
} else {
echo ' ->サムネイル画像保存失敗';
}
} else {
// サムネイル画像作成失敗
echo ' ->サムネイル画像作成失敗';
}
// 画像の破棄
imagedestroy($image);
imagedestroy($image_l);
imagedestroy($image_s);
} else {
// アップロードの失敗
echo '■アップロード失敗';
}
} else {
// JPEG形式以外のファイルはアップロードしない
echo '■JPEG形式の画像をアップロードしてください。';
}
}
//ファイルへ保存
file_put_contents($name_file,$name_log);
?>
</body>
</html>
お礼
回答ありがとうございます。 出来ました。 CGIをはじめたばかりなのでハッシュという発想まで行きませんでした。。。 本当にありがとうございます。