0

2 つのファイル (html と php) があります。ユーザーはファイルを html 形式でアップロードします。php ファイルには、ファイルをサーバーにアップロードするためのスクリプトが含まれています。問題は、ユーザー 1 が「wordThing.docx」をアップロードし、ユーザー 2 が「wordThing.docx」をアップロードすると、ユーザー 1 のファイルが上書きされることです。

ここに私のHTMLコードがあります:

<html>
<body>
<form action="upload_file.php" method="post" enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file"><br />

<label for="yourName">Your name:</label>
<input type="textbox" name="yourName" id="yourName" /><br />
<input type="submit" name="submit" value="Submit"><br />
</form>
</body>
</html>

そして、これは私のPHPスクリプトです:

 <?php
 $userName=$_POST['yourName'];
 $target_path = "uploads/";
 $target_path = $target_path . basename( $_FILES['uploadedfile']['name']); 
 if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) 
 {
     echo "The file ".  basename( $_FILES['uploadedfile']['name']). 
     " has been uploaded";
 } 
 else
 {
     echo "There was an error uploading the file, please try again!";
 }
 ?>

ユーザーが「yourName」に入力するテキストを添付したいと思います。したがって、サーバーにはさまざまなファイル名が含まれており、上書きする必要はありません。したがって、ユーザーの名前が異なると仮定すると、ファイルに名前を付けてサーバーに保存する方法を知りたいと思います。例: ユーザー 1 のファイル アップロードは「wordThingSusan.docx」になります。

これが過大な情報でないことを願っています。明確かつ正確になりたかっただけです。誰かがこのコードを使用しようとしている場合に備えて、ディレクトリの下に「uploads」という名前のフォルダーを作成して機能させる必要があります。

4

3 に答える 3

1

ファイル名の先頭に UNIX タイムスタンプを追加するだけです。

<?php
    $userName=$_POST['yourName'];
    $target_path = "uploads/";
    $target_path = $target_path . date('U') . '_' . basename( $_FILES['uploadedfile']['name']); 
    if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) 
    {
        echo "The file ".  basename( $_FILES['uploadedfile']['name']). " has been uploaded";
    } else {
        echo "There was an error uploading the file, please try again!";
    }

?>

于 2013-05-28T20:48:12.153 に答える