2016-06-23 17 views
1

複数のファイルをアップロードしてからドロップダウンメニューを使ってファイル名を選択できるようにする必要があります。ファイルは私の学校のオプションのウェブサイトに使用され、ファイルはコースコードを使って名前を付ける必要があります。残念なことに、ユーザーは誤って名前を付けることが多いので、ファイルをアップロードしてコースを選択できるようにしたい。計画は、コードが正しいように自動的に名前を変更することです。ユーザーは自分の名前を選択し、ファイルをアップロードしてアップロードが専用のフォルダに保存されるようにします。ファイル名のドロップダウンメニューを使って複数のファイルをアップロードしたり名前を変更したりするにはどうすればよいですか?

私は1つのファイルに対して実行できますが、複数のファイルに対して実行する必要があります。私は複数のファイルをアップロードできますが、名前を変更することはできません。問題は、$ _FILESを使用して作成できる配列に複数の新しいファイル名をリンクする方法がわからないということです。

1つのファイルをアップロードして名前を変更するコードです。 )やがて.pdfファイルをする...

<?php 
 

 
// Makes directory and changes file name for one file 
 

 
if ($_SERVER["REQUEST_METHOD"] == "POST") { 
 
\t 
 
\t $uploads = $_POST['name']; 
 
\t if (!is_dir($uploads)) 
 
\t { 
 
\t \t mkdir($uploads); 
 
\t } 
 
\t 
 
\t $info = pathinfo($_FILES['userFile']['name']); 
 
\t $ext = $info['extension']; // get the extension of the file 
 
\t $newname = $_POST['new_name'].".".$ext; 
 

 
\t $target = $uploads.'/'.$newname; 
 
\t move_uploaded_file($_FILES['userFile']['tmp_name'], $target); 
 
\t 
 
} 
 
?> 
 

 
<form name="UploadForm" enctype="multipart/form-data" method="post"> 
 
    
 
    <p> 
 
    Find the file(s) you want to upload and click the "Upload" button below. 
 
\t </p> 
 
\t <p> 
 
\t <b>Teacher Code:</b> 
 
\t \t <select name="name"> 
 
\t \t \t <option value="Mr_A">Mr A</option> 
 
\t \t \t <option value="Mr_B">Mr_B</option> 
 
\t \t \t <option value="Mr_C">Mr C</option> 
 
\t \t </select> 
 
\t </p> 
 
\t 
 
\t <p>Select the course from the box and then select the .pdf outline...</p> 
 

 
    
 
\t \t <p> 
 
\t \t 
 
\t \t <select name="new_name"> 
 
\t \t \t <option value="">Choose...</option> 
 
\t \t \t <option value="L1PROG01">Programming - Level 1</option> 
 
\t \t \t <option value="L2PROG01">Programming - Level 2</option> 
 
\t \t \t <option value="L3PROG01">Programming - Level 3</option> 
 
\t \t \t <option value="L1WEBD01">Web Design - Level 1</option> 
 
\t \t \t <option value="L2WEBD01">Web Design - Level 2</option> 
 
\t \t \t <option value="L3WEBD01">Web Design - Level 3</option> 
 
\t \t </select> 
 
\t \t 
 
\t \t <input name="userFile" type="file" /> 
 
\t \t 
 
\t \t </p> 
 
\t \t 
 
    <br/>Check this box <input autocomplete="off" type="checkbox" checked name="overwrite" /> to <strong>overwrite</strong> existing files. 
 
    <input type="submit" value="Upload" /> 
 
    </form>

答えて

0

Htmlの

<input name="files[]" type="file" multiple="multiple" />

PHP

$count = count($_FILES['files']['name']); 

for($i=0; $i<$count; $i++) {  

$temp = explode(".", $_FILES["files"]["name"][$i]); 
$newfilename = "new_name". '.' . end($temp); 
move_uploaded_file($_FILES["files"]["tmp_name"][$i], "upload/" . $newfilename); 

} 
+0

申し訳ありません - 上記は私のためには機能しません。ファイルを 'uploads'フォルダに移動しますが、 'new_name.jpg'ファイルを呼び出します<もちろん、同じ名前のファイルを上書きするように設定されているので、フォルダ内には1つのファイルしか存在しません>。良いニュースはファイルの名前を変更することです。悪い知らせは、ファイルの名前を変更して、ユーザーがドロップダウンメニューから選択した値と一致するようにする方法がまだわからないことです。 –

+0

その新しい名前でいくつかのrand()番号を追加してください。同じ名前をfillに置き換える場合は、置き換えます – Mani

+0

あなたが私に与えたコードはすばらしかったです。ちょうどhtmlで少し欠けていました( 'new_name'の後ろの角括弧) 。私はまた、それは私のユーザーが記入するフォームからファイル名とファイルの両方を取得するようにPHPを微調整した。他の人が同様の問題を抱えている場合に備えて、以下の作業コードを掲載しました。私は物事をちょっとしたものにしていた私のファイルの名前を変える必要がありました。 –

0

アップデート:私は(たくさん助け)マニのコードを使用し、それが機能するようになりました。ここで重要なビットが...ある

HTML:

\t <p>Select the course from the box and then select the .pdf outline...</p> 
 

 
\t \t <?php 
 
\t \t for ($n=0; $n<10; $n++) { 
 
\t \t ?> 
 
\t \t <p> 
 
\t \t \t \t 
 
\t \t <select name="new_name[<?php $n ?>]" value=""> 
 
\t \t \t <option value="">Choose...</option> 
 
\t \t \t <option value="L1PROG01">Programming - Level 1</option> 
 
\t \t \t <option value="L2PROG01">Programming - Level 2</option> 
 
\t \t \t <option value="L3PROG01">Programming - Level 3</option> 
 
\t \t \t <option value="L1WEBD01">Web Design - Level 1</option> 
 
\t \t \t <option value="L2WEBD01">Web Design - Level 2</option> 
 
\t \t \t <option value="L3WEBD01">Web Design - Level 3</option> 
 
\t \t </select>

、ここで(ページの最上部に向かっている)更新PHP

<?php 
 

 
// Makes directory and changes file name for many files. 
 

 
if ($_SERVER["REQUEST_METHOD"] == "POST") { 
 
\t 
 
\t $uploads = $_POST['name']; \t // folder name 
 
\t \t 
 
\t if (!is_dir($uploads)) 
 
\t { 
 
\t \t mkdir($uploads); 
 
\t } 
 
\t 
 
\t $count = count($_FILES['files']['name']); 
 

 
\t for($i=0; $i<$count; $i++) {  
 

 
\t $temp = explode(".", $_FILES["files"]["name"][$i]); 
 
\t $new_name = $_POST['new_name'][$i]; 
 
\t $newfilename = $new_name. '.' . end($temp); 
 
\t $target = $uploads.'/'.$new_name.".jpg"; 
 
\t move_uploaded_file($_FILES["files"]["tmp_name"][$i], $target); 
 

 
\t } 
 
\t \t 
 
\t } 
 

 
?>
があります

上記は教師の名前に応じてフォルダを作成し、ファイルのアップロード(名前の変更)を許可します。古いファイルを自動的に上書きします。これは私がしたいことです。 まだ無効/予期しないデータがありません。

関連する問題