Php 在服务器中上载多个文件
我想上传多个文件,而不是一个。我知道如何上传单个文件(图像),我需要上传多个文件的帮助。下面你可以看到我如何上传一个文件 以下是添加时的HTML:Php 在服务器中上载多个文件,php,html,Php,Html,我想上传多个文件,而不是一个。我知道如何上传单个文件(图像),我需要上传多个文件的帮助。下面你可以看到我如何上传一个文件 以下是添加时的HTML: <form action="upload_file.php" method="post" enctype="multipart/form-data"> <label for="file">Filename:</label> <input type="file" name="file"
<form action="upload_file.php" method="post" enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file" multiple><br>
<input type="submit" name="submit" value="Submit">
</form>
文件名:
我看到一些人将name=“file”更改为name=“file[]”。但是我不知道如何用php上传它
下面是PHP代码
<?php
$allowedExts = array("gif", "jpeg", "jpg", "png");
$temp = explode(".", $_FILES["file"]["name"]);
$extension = end($temp);
$random_digit=rand(0000,9999);
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/x-png")
|| ($_FILES["file"]["type"] == "image/png"))
&& ($_FILES["file"]["size"] < 20000)
&& in_array($extension, $allowedExts))
{
if ($_FILES["file"]["error"] > 0)
{
echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
}
else
{
if (file_exists("upload/" . $_FILES["file"]["name"]))
{
echo $_FILES["file"]["name"] . " already exists. ";
}
else
{
$file_name = $_FILES["file"]["name"];
$ext = pathinfo($file_name, PATHINFO_EXTENSION); // Get the extension of a file
$new_file_name = $random_digit . '.' . $ext;
move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $new_file_name);
echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
}
}
}
else
{
echo "Invalid file";
}
?>
如果使用name=“file[]”$\u FILES[“file”][“name”]
将是一个数组(),您可以使用print\r($\u FILES[“file”])
或var\u dump($\u FILES[“file”])
对其进行测试,您的数组将如下所示:
Array
(
[uploads] => Array
(
[name] => Array
(
[0] => hack-attempt.sh
[1] => picture.gif
[2] => text.txt
[3] => virus.exe
)
[type] => Array
(
[0] => application/sh
[1] => image/jpeg
[2] => text/plain
[3] => applicatio/octet-stream
)
[tmp_name] => Array
(
[0] => /tmp/hack-attempt.sh
[1] => /tmp/picture.gif
[2] => /tmp/text.txt
[3] => /tmp/virus.exe
)
[error] => Array
(
[0] => 0
[1] => 0
[2] => 0
[3] => 0
)
[size] => Array
(
[0] => 217297
[1] => 53600
[2] => 6511924
[3] => 127662
)
)
)
示例取自:它是德语,但仅用于信用。如果您使用name=“file[]”$\u FILES[“file”][“name”]
将是一个数组(),您可以使用打印($\u FILES[“file”])
或变量转储($\u FILES[“file”])
对其进行测试,您的数组将如下所示:
Array
(
[uploads] => Array
(
[name] => Array
(
[0] => hack-attempt.sh
[1] => picture.gif
[2] => text.txt
[3] => virus.exe
)
[type] => Array
(
[0] => application/sh
[1] => image/jpeg
[2] => text/plain
[3] => applicatio/octet-stream
)
[tmp_name] => Array
(
[0] => /tmp/hack-attempt.sh
[1] => /tmp/picture.gif
[2] => /tmp/text.txt
[3] => /tmp/virus.exe
)
[error] => Array
(
[0] => 0
[1] => 0
[2] => 0
[3] => 0
)
[size] => Array
(
[0] => 217297
[1] => 53600
[2] => 6511924
[3] => 127662
)
)
)
示例取自:它是德语,但仅用于学分。您的上传表单需要有多个同名输入字段 让我们称之为“上传[]” 然后,在接收脚本中,您需要循环遍历$\u FILES[]数组以访问每个数组
$response = "";
$i = 0;
while ((isset($_FILES['upload']['name'][$i])) && ($_FILES['upload']['name'][$i]<>"")){
$error = $_FILES['upload']['error'][$i];
if ($error == 0){
$upfilename = $_FILES['upload']['name'][$i];
//should probably validate your filename here
//$upfilename = validate_fname($upfilename)
$tmpname = $_FILES['upload']['tmp_name'][$i];
$dirname = "uploads" // your files to be stored in this directory
if (move_uploaded_file($tmpname, $dirname."/".$filename)){
$response .= "<br><div class=\"message\">File : $filename : uploaded successfully. Thank you.</div><br>";
}else {
$response .= "<br> <div class=\"message\"> There was an error uploading file: $filename ";
}
}
else $response = "<br><div class=\"errormsg\">there was an error - error code: $error</div><br>";
$i++;
}
$response=”“;
$i=0;
而((isset($\u FILES['upload']['name'][$i])和($\u FILES['upload']['name'][$i])){
$error=$_文件['upload']['error'][$i];
如果($error==0){
$upfilename=$_文件['upload']['name'][$i];
//应该在这里验证您的文件名
//$upfilename=validate\u fname($upfilename)
$tmpname=$\u文件['upload']['tmp\u name'][$i];
$dirname=“uploads”//您要存储在此目录中的文件
if(移动上传的文件($tmpname,$dirname./“$filename)){
$response.=“
文件:$filename:已成功上载。谢谢。
”;
}否则{
$response.=“
上传文件时出错:$filename”;
}
}
else$response=“
出现错误-错误代码:$error
”;
$i++;
}
您的上传表单需要有多个同名输入字段
让我们称之为“上传[]”
然后,在接收脚本中,您需要循环遍历$\u FILES[]数组以访问每个数组
$response = "";
$i = 0;
while ((isset($_FILES['upload']['name'][$i])) && ($_FILES['upload']['name'][$i]<>"")){
$error = $_FILES['upload']['error'][$i];
if ($error == 0){
$upfilename = $_FILES['upload']['name'][$i];
//should probably validate your filename here
//$upfilename = validate_fname($upfilename)
$tmpname = $_FILES['upload']['tmp_name'][$i];
$dirname = "uploads" // your files to be stored in this directory
if (move_uploaded_file($tmpname, $dirname."/".$filename)){
$response .= "<br><div class=\"message\">File : $filename : uploaded successfully. Thank you.</div><br>";
}else {
$response .= "<br> <div class=\"message\"> There was an error uploading file: $filename ";
}
}
else $response = "<br><div class=\"errormsg\">there was an error - error code: $error</div><br>";
$i++;
}
$response=”“;
$i=0;
而((isset($\u FILES['upload']['name'][$i])和($\u FILES['upload']['name'][$i])){
$error=$_文件['upload']['error'][$i];
如果($error==0){
$upfilename=$_文件['upload']['name'][$i];
//应该在这里验证您的文件名
//$upfilename=validate\u fname($upfilename)
$tmpname=$\u文件['upload']['tmp\u name'][$i];
$dirname=“uploads”//您要存储在此目录中的文件
if(移动上传的文件($tmpname,$dirname./“$filename)){
$response.=“
文件:$filename:已成功上载。谢谢。
”;
}否则{
$response.=“
上传文件时出错:$filename”;
}
}
else$response=“
出现错误-错误代码:$error
”;
$i++;
}
啊,是的,这是一个很好的旧标准上传脚本,它试图展示W3傻瓜们有多么愚蠢,这既完全不安全,也完全愚蠢。我现在可以添加多个文件。但是,在将其添加到服务器之前,我是否可以显示它们?啊,是的,这是一个很好的旧标准上载脚本,它既完全不安全,又完全愚蠢,因为它试图显示W3愚人是多么愚蠢。我现在可以添加多个文件的可能副本。但是,在将其添加到服务器之前,我是否可以显示它们?