我需要允许用户上传多个文件,然后使用下拉菜单选择文件名。这些文件将用于我的学校的"选项"网站,并且需要使用课程代码命名文件。不幸的是,用户经常错误地名称,因此我想允许他们上传文件并选择课程。该计划是自动重命名它们,以使代码正确。用户选择其名称,然后上传文件,以便将其上传放入专用文件夹中。
我可以为一个文件执行此操作,但是我需要能够使用一个以上的文件来执行此操作。我可以上传多个文件,但似乎无法重命名它们。问题是我不知道如何将多个新文件名链接到可以使用$ _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);
}
}
?>
上面的文件夹取决于教师的名字,然后允许他们上传文件(正确重命名)。它将自动编写旧文件,这是我想要的。它尚未 无效/意外数据。