2011-09-23 62 views
0

这是我在论坛上的第二个问题。我已经用尽了所有研究自己的途径。我有一个HTML表单,将用脚本处理。在这种形式下,用户必须最多上传10张图片的选项....每个图像都有这样自己的输入字段...PHP多个文件上传到服务器

<form action="upload.php" method="post" enctype="multipart/form-data"> 

<label for="file">Filename:</label> 
<input type="file" name="file" id="file" /> 

<label for="file">Filename:</label> 
<input type="file" name="file" id="file" /> 

<label for="file">Filename:</label> 
<input type="file" name="file" id="file" /> 

<label for="file">Filename:</label> 
<input type="file" name="file" id="file" /> 

<br /> 
<input type="submit" name="submit" value="Submit" /> 
</form> 

的PHP是这样的......

$client = $_POST['company']; 
$date = date("mdy"); 
$clientFolder = $client . $date; 

mkdir('../../../uploads/' . $clientFolder . '/', 0700); 
$folderPath = '../../../uploads/' . $clientFolder . '/'; 



if ((($_FILES["file"]["type"] == "image/gif") 
|| ($_FILES["file"]["type"] == "image/jpeg") 
|| ($_FILES["file"]["type"] == "image/pjpeg")) 
&& ($_FILES["file"]["size"] < 100000)) 
    { 
    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"]/1024) . " Kb<br />"; 
    echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />"; 

    if (file_exists($folderPath . $_FILES["file"]["name"])) 
     { 
     echo $_FILES["file"]["name"] . " already exists. "; 
     } 
    else 
     { 
     move_uploaded_file($_FILES["file"]["tmp_name"], 
     $folderPath . $_FILES["file"]["name"]); 
     echo "Stored in: " . $folderPath . $_FILES["file"]["name"]; 
     } 
    } 
    } 
else 
    { 
    echo "Invalid file"; 
    } 

我可以正确上传一个文件,但不能超过一个。我使用这个教程。 http://www.w3schools.com/php/php_file_upload.asp

我需要循环这些吗?或者我需要唯一的名称和ID?任何帮助将不胜感激!我是新来的PHP ....我不得不说,但是..我喜欢它!到目前为止...

回答

0

也许你想以不同的方式命名输入(比如:文件1,文件2等),然后在PHP中,你会做这样的事情:

$i = 1; 
while(isset($_POST['file'.$i])){ 
    //do upload here 
    $i++; 
} 

为什么你只得到1个文件上传的原因是因为你命名了输入“文件”(并且因为你没有循环输入)。改变它,它应该没问题。

+0

好吧,我想通过这个想法。我将有<标签= “file1的”>文件名: <标签= “file2的”>文件名: <输入type =“file2”name =“file”id =“file2”/> THEN $ i = 0; (isset($ _ POST ['file'。$ i])){ // do upload here --- ???? ((($ _FILES [“file”] [“type”] ==“image/gif”)并包含整个语句???? //// $ i ++; } – mkrisch76

+0

,包括整个'if'语句 –

+0

对不起,有一个错误,'$ i'应该从1开始,而不是0,如果你是从file1命名输入的话,我已经编辑了我的帖子。 –

1

我还没有浏览完整的代码,但如果您为不同的表单元素使用相同的名称,您将失去除一个以外的所有值。

有一点例外,你可能想使用:加方括号将让PHP创建数组:

<label for="file">Filename:</label> 
<input type="file" name="file[]"> 

<label for="file">Filename:</label> 
<input type="file" name="file[]"> 

您可以使用var_dump()$_FILES检查确切结构。

其次,idHTML属性应该保存唯一的标识符。您的客户端脚本可能表现错误。

+0

这很有趣。 。我很想学习尽可能多的东西,我去了php手册来检查我们的var_dump(),但是不能把我的大脑包裹起来,你会给我另外一个提示,告诉我接下来要做什么吗? – mkrisch76

+0

The接下来的一步可能是[Handling file uploads](http://www.php.net/manual/en/features.file-upload.php)一章。 –