2017-10-17 6 views
-2

ファイル名に日付/時刻を追加することで、重複した画像ファイルのアップロードを防止します。日付/時刻がPHPに変わるのを防ぐ方法

私はイメージプレビューを持っており、ユーザーがイメージファイルをアップロードすると、そのファイルは日付タイムスタンプのあるフォルダに送られます。ユーザーがフォームに記入してイメージとフォームの詳細をデータベースにポストすると、イメージファイルにイメージ分が変わります。

問題は、画像ファイルがフォルダに送信され、日付時刻が設定されている場合です。 image 17 10 2017 10 18.jpgしかし、データベースのイメージパスを作成すると分が変わります。画像17 10 2017 10 19.jpg。

1)Ajaxを使用してフォルダに送信されたファイル。 filename.date.extension
2)書式設定後にデータベースに送信されるファイルパス。ファイルパス/ filename.date.extension

日付/時刻が1と一致していません)2に等しくなるようになっている)

<?php 

    // Uploaded file sent via AJAX 
    $mainImg = $_FILES['mainImg']['name']; 

    $ext = pathinfo($mainImg, PATHINFO_EXTENSION); 
    $justname = basename($mainImg,".$ext"); 

    // Prevent duplicate 
    $pd = date(" d m y H i "); 

    // 6)Rename the main Image 
    $dateAdded = $justname.$pd.".".$ext; 

    FILE IS SENT TO THE FOLDER THEN WHEN FORM IS FILLED OUT AND POSTED ALL 
    INFO GOES TO DATABASE... 
    if (isset($_POST['submit'])){ 
    $directory = "Images/"; 
    $filetodatabase = $directory.$dateAdded; 

    //CONNECT AND INSERT DATA INTO DATABASE USING MYSQL 
    } 
+1

のsha1ハッシュを計算しますAJAXファイルのアップロード時のタイムスタンプとフォーム提出時の2番目のタイムスタンプはい、これらの2つのタイムスタンプは異なる場合があります。 AJAXファイルのアップロード完了時にタイムスタンプをブラウザに送り返し、隠しフォーム入力に保存してください。もう一度タイムスタンプを生成しないでください。隠し入力に格納されているものを使用してください。このようにして、同じことになります。 – Matey

+0

ありがとう、私は、乱数を生成し、画像と共にAJAX経由で送信し、同時に隠れた入力に同じ番号を送った。私は、Ajaxのアップロードファイルとフォームアップロードファイルを分割しなければなりませんでした。 – ticktock

答えて

0

一度タイムスタンプを生成します。もう一度必要な場合は、他のコンポーネントに送信してください。

0

タイムスタンプまたは日付の代わりに、ファイルのハッシュを使用してアップロードが重複しないようにします。

次の二つのためのPHPのマニュアルを参照してください:

  • md5_file - 指定したファイル
  • sha1_fileのMD5ハッシュ値を計算する - だから、1つを生成するファイル
関連する問題