PHP只允许某些文件上传,并且允许用户一次PICK多个文件上传

时间:2015-11-28 04:14:16

标签: php types multi-select

我有点编码,但我错过了这一部分。以下PHP仅允许上传gif,jpeg,jpg,doc和pdf文件。我的最大文件大小不超过5兆。目前编码工作正如我所希望的那样,WITH和exception。我希望用户能够PICK一次说出5,6或7个文件,然后按一下上传按钮。我认为我能做的只是复制输入类型='文件'名称=' file_upload'> 5次..这有效,但是当我尝试按下上传按钮时,它会等待几秒钟,然后弹出我的错误代码'上传时出现错误。'

如果有人可以提供帮助,我将不胜感激。我确信编码可以更清晰,但正如你所看到的那样,我对php很新(很多)。

先谢谢 贝

HTML编码:

<form method='post' enctype='multipart/form-data' action='../edocs.php'>
<input type='file' name='file_upload'><br>
<input type='submit' value="Upload" ><br><input type="reset" >



<?php
if($_FILES['file_upload']['error'] > 0){
die('An error ocurred when uploading.');
}
if($_FILES['file_upload']['type']!= 'image/gif')
if($_FILES['file_upload']['type']!= 'image/jpeg')
if($_FILES['file_upload']['type']!= 'image/jpg')
if($_FILES['file_upload']['type']!= 'application/msword')
if($_FILES['file_upload']['type']!= 'application/pdf'){
die('Unsupported filetype uploaded.  You need to change your file type

2 个答案:

答案 0 :(得分:4)

你可以尝试这样,它会起作用。

    <form method="post" enctype="multipart/form-data">
        <input type="file" name="my_file[]" multiple>
        <input type="submit" value="Upload">
    </form>

    <?php
        if (isset($_FILES['my_file'])) {
            $myFile = $_FILES['my_file'];
            $fileCount = count($myFile["name"]);

            for ($i = 0; $i < $fileCount; $i++) {
                ?>
                    <p>File #<?= $i+1 ?>:</p>
                    <p>
                        Name: <?= $myFile["name"][$i] ?><br>
                        Temporary file: <?= $myFile["tmp_name"][$i] ?><br>
                        Type: <?= $myFile["type"][$i] ?><br>
                        Size: <?= $myFile["size"][$i] ?><br>
                        Error: <?= $myFile["error"][$i] ?><br>
                    </p>
                <?php
            }
        }
    ?>

或者您可以尝试http://www.uploadify.com/documentation/

答案 1 :(得分:0)

首先改变这个

文件的

multiple属性和文件的名称为数组。

<input type='file' name='file_upload[]' multiple><br>
                                     ^   ^// this will allow the user to select multiple files.

然后$_FILES使用foreach循环

foreach ($_FILES['file']['name'] as $filename)
{
    $temp="path to upload the file";
    $tmp=$_FILES['file']['tmp_name'][$count];
    $count=$count + 1;
    $temp=$temp.basename($filename);
    move_uploaded_file($tmp,$temp);
    $temp='';
    $tmp='';
}

参考this