上载多个文件并在PHP中为上载的文件指定一个新名称
大家好,我有这个上传脚本,可以一次上传一个文件,但我需要同时上传多个文件,然后将每个上传的文件命名为1,下一个文件命名为2,下一个文件命名为3,依此类推上载多个文件并在PHP中为上载的文件指定一个新名称,php,Php,大家好,我有这个上传脚本,可以一次上传一个文件,但我需要同时上传多个文件,然后将每个上传的文件命名为1,下一个文件命名为2,下一个文件命名为3,依此类推 <?php $allowedExts = array("gif", "jpeg", "jpg", "png","JPG"); $temp = explode(".", $_FILES["file"]["name"]); $extension = end($temp); if (in_array($e
<?php
$allowedExts = array("gif", "jpeg", "jpg", "png","JPG");
$temp = explode(".", $_FILES["file"]["name"]);
$extension = end($temp);
if (in_array($extension, $allowedExts))
{
if ($_FILES["file"]["error"] > 0)
{
echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
}
else
{
echo "Upload: " . $_FILES["file"]["name"] . "<br>";
echo "Type: " . $_FILES["file"]["type"] . "<br>";
echo "Size: " . ($_FILES["file"]["size"] / 1032) . " kB<br>";
echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br>";
if (file_exists("i/" . $_FILES["file"]["name"]))
{
echo $_FILES["file"]["name"] . " already exists. ";
}
else
{
move_uploaded_file($_FILES["file"]["tmp_name"], "i/" . $_FILES["file"]["name"]);
echo "Stored in: " . "i/" . $_FILES["file"]["name"];
}
}
}
else
{
echo "Invalid file";
}
?>
您应该能够这样做:
$files = array();
$allowed_filetypes = array('jpg','jpeg','gif','bmp','png','tif','pdf');
$max_filesize = 15242880;
$upload_path = 'images/image_uploads/';
for ($i = 0; $i < count($_FILES['files']['name']); $i++){
if($_FILES['files']['name'][$i] != "") {
$filename = $_FILES['files']['name'][$i];
$file_info = pathinfo($_FILES['files']['name'][$i]);
$ext = strtolower($file_info['extension']);
//echo "<span style='font-size: 20px; color: #ff3333;'>".$ext."</span>";
if(!in_array($ext,$allowed_filetypes))
die("The file you attempted to upload ($filename) is not allowed.");
if(filesize($_FILES['files']['tmp_name'][$i]) > $max_filesize)
die("The file you attempted to upload ($filename) is too large.");
if(!is_writable($upload_path))
die("You cannot upload to the specified directory, please CHMOD it to 777.");
$filename = ($i+1).".".$ext;
if(move_uploaded_file($_FILES['files']['tmp_name'][$i],$upload_path.$filename)) {
$result = mysql_query("Insert Into image_uploads_images (upload_id, image, original_name) Values ('$id', '$filename', '".$_FILES['files']['name'][$i]."');");
if($result){
array_push($files, "http://www.site.com/images/image_uploads/$filename => ".$_FILES['files']['name'][$i]);
}else{
echo "<p style=\"color:#cc3333;\">Unable to upload ".$_FILES['files']['name'][$i]."</p>";
}
}else{
echo "<p style=\"color:#cc3333;\">Unable to upload ".$_FILES['files']['name'][$i]."</p>";
}
}
}
编辑
作为一个简单的解释,所有文件输入都将具有相同的名称,在本例中为文件。但是当您这样做时,您需要在form元素中的name后面添加[],这样它就可以作为一个数组
一旦你有了$_FILES数组,你就可以对上传的每个文件进行递归检查,并根据需要使用它。只需在html上使用几个输入:
<form action="file-upload.php" method="post" enctype="multipart/form-data">
Send these files:<br />
<input name="userfile[]" type="file" /><br />
<input name="userfile[]" type="file" /><br />
<input type="submit" value="Send files" />
</form>
在你的PHP中
<?php
for ($i=0; $i < count($_FILES['name']); $i++) {
$new_file = $_FILES['name'][$i] . '.' . $i+1;
}
?>
后者将创建附加索引+1的文件名,因此您将有:
myfile1.txt.1
myfile1.txt.2
根据需要进行调整
编辑:。是否有以下帮助?