上传多个文件并在PHP中为上传的文件添加新名称

时间:2014-03-28 20:07:16

标签: php

大家好我有这个上传脚本,可以上传一个文件,但我需要同时上传多个文件,然后将每个上传的文件命名为1,将下一个文件命名为{ {1}}和下一个2等等。

3

2 个答案:

答案 0 :(得分:0)

你应该能够这样做:

        $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>";
                }
            }
        }

修改

正如一个简短的解释,所有文件输入都具有相同的名称,在本例中为files。但是当你这样做时,你需要在表单元素的后面添加[],比如<input type="file" name="files[]" />,以便它作为一个数组出现。

获得$_FILES数组后,您可以递归地浏览每个上传的文件,并根据需要进行操作。

答案 1 :(得分:0)

只需在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

根据需要进行调整。

修改: Check this link