ユーザーはプロフィール画像を1枚ずつアップロードできますが、必要なだけ頻繁にアップロードできます。ファイル名内の自動インクリメント数
はのは、ユーザ1が画像をアップロードと仮定しましょう、このコードは私のアップロード・フォルダに保存されます:
<?php
$fileData = pathinfo(basename($_FILES["fileToUpload"]["name"]));
$fileName = 'user_id_#1#_profilepic_#' . uniqid() . '#.' . $fileData['extension'];
$target_path = "uploads/" . $fileName;
while(file_exists($target_path)) {
$fileName = 'user_id_#1#_profilepic_#' . uniqid() . '#.' . $fileData['extension'];
$target_path = ($_SERVER['DOCUMENT_ROOT'] . "uploads/" . $fileName);
}
if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_path)) {
echo "The image was successfully uploaded. <a href='index.php'>Add another image</a>";
}
else {
echo "There was an error uploading the file, please try again!";
}
?>
このuniqid()、それは以降で上の画像を見つけるために悪夢だから、交換する必要があります正しい順序。
私がイメージをしたい - このように見えるように - アップロード後:
user_id_#1#_profilepic_#1#.jpg
user_id_#1#_profilepic_#2#.jpg
user_id_#1#_profilepic_#3#.png
user_id_#1#_profilepic_#4#.gif
user_id_#1#_profilepic_#5#.jpg
and so on...
私はこれをどのように行うことができますか?私はこれまでのところ考えていません。
代わりにタイムスタンプのようなものを使用してみませんか? '$ fileName = 'user_id_#1#_profilepic_#'です。時間()。 '#' 。最初にそのオプションについて知りませんでしたので、$ fileData ['extension']; ' – AbraCadaver
ですが、私は別の画像を表示したいときに、その名前をどうやって読み込むことができるのでしょうか? 私のファイル名に自動インクリメント番号がある場合は、最も高い数字から始め、クリック時に低い数字に移動することができます。しかし、代わりにファイル名に時間がかかれば、それはうまくいきません、そうですか? – Maxischl
'$ users_files = glob( 'user_id_#1#_profilepic _#*。*'); ' – AbraCadaver