如何使用PHP使用文件名的下拉菜单上传和重命名多个文件



我需要允许用户上传多个文件,然后使用下拉菜单选择文件名。这些文件将用于我的学校的"选项"网站,并且需要使用课程代码命名文件。不幸的是,用户经常错误地名称,因此我想允许他们上传文件并选择课程。该计划是自动重命名它们,以使代码正确。用户选择其名称,然后上传文件,以便将其上传放入专用文件夹中。

我可以为一个文件执行此操作,但是我需要能够使用一个以上的文件来执行此操作。我可以上传多个文件,但似乎无法重命名它们。问题是我不知道如何将多个新文件名链接到可以使用$ _files

创建的数组

这是上传和重命名单个文件的代码(它使用.jpg文件,但会在适当的时候更改为.pdf文件)...

<?php 
// Makes directory and changes file name for one file
if ($_SERVER["REQUEST_METHOD"] == "POST") {
	
	$uploads = $_POST['name'];
	if (!is_dir($uploads))
	{
		mkdir($uploads);
	}
	
	$info = pathinfo($_FILES['userFile']['name']);
	$ext = $info['extension']; // get the extension of the file
	$newname = $_POST['new_name'].".".$ext; 
	$target = $uploads.'/'.$newname;
	move_uploaded_file( $_FILES['userFile']['tmp_name'], $target);
	
}
?>
<form name="UploadForm" enctype="multipart/form-data" method="post">
    
    <p>
    Find the file(s) you want to upload and click the "Upload" button below.
	</p>
	<p>
	<b>Teacher Code:</b> 
		<select name="name">
			<option value="Mr_A">Mr A</option>
			<option value="Mr_B">Mr_B</option>
			<option value="Mr_C">Mr C</option>
		</select>
	</p>
	
	<p>Select the course from the box and then select the .pdf outline...</p>
    
		<p>
		
		<select name="new_name">
			<option value="">Choose...</option>
			<option value="L1PROG01">Programming - Level 1</option>
			<option value="L2PROG01">Programming - Level 2</option>
			<option value="L3PROG01">Programming - Level 3</option>
			<option value="L1WEBD01">Web Design - Level 1</option>
			<option value="L2WEBD01">Web Design - Level 2</option>
			<option value="L3WEBD01">Web Design - Level 3</option>
		</select>
		
		<input name="userFile" type="file" />
		
		</p>
		
    <br/>Check this box <input autocomplete="off" type="checkbox" checked name="overwrite" /> to <strong>overwrite</strong> existing files.
    <input type="submit" value="Upload" />
    </form>

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);
}

更新:我使用了Mani的代码(对很多帮助),现在可以使用。这是关键位...

html:

	<p>Select the course from the box and then select the .pdf outline...</p>
		<?php
		for ($n=0; $n<10; $n++) {
		?>
		<p>
				
		<select name="new_name[<?php $n ?>]" value="">
			<option value="">Choose...</option>
			<option value="L1PROG01">Programming - Level 1</option>
			<option value="L2PROG01">Programming - Level 2</option>
			<option value="L3PROG01">Programming - Level 3</option>
			<option value="L1WEBD01">Web Design - Level 1</option>
			<option value="L2WEBD01">Web Design - Level 2</option>
			<option value="L3WEBD01">Web Design - Level 3</option>
		</select>

这是更新的php(位于页面顶部)

<?php 
// Makes directory and changes file name for many files.  
if ($_SERVER["REQUEST_METHOD"] == "POST") {
	
	$uploads = $_POST['name'];	// folder name
		
	if (!is_dir($uploads))
	{
		mkdir($uploads);
	}
	
	$count = count($_FILES['files']['name']);
	for($i=0; $i<$count; $i++) {    
	$temp = explode(".", $_FILES["files"]["name"][$i]);
	$new_name = $_POST['new_name'][$i];
	$newfilename = $new_name. '.' . end($temp);
	$target = $uploads.'/'.$new_name.".jpg";
	move_uploaded_file($_FILES["files"]["tmp_name"][$i], $target);
	}
		
	}
?>

上面的文件夹取决于教师的名字,然后允许他们上传文件(正确重命名)。它将自动编写旧文件,这是我想要的。它尚未 无效/意外数据。

最新更新