0

得到了这段代码:

if ($_FILES["file1"]["error"] == 0) {
        move_uploaded_file($_FILES["file1"]["tmp_name"], "path/".$_FILES["file1"]["name"]);
    }

我想重用它来上传更多文件。正在考虑一些参数的功能,但似乎我无法正确获取变量。

好的,像这样修复它:

function upload($file) {

        $allowedExts = array("pdf, jpg, gif, png");
        $extension = end(explode(".", $_FILES[$file]["name"]));

        if (in_array($extension, $allowedExts)) && ($_FILES[$file]["error"] == 0) {
            move_uploaded_file($_FILES[$file]["tmp_name"], "img/new/".$_FILES[$file]["name"]);
        }
    }

并通过以下方式调用:

upload("file1");

不确定$_FILES循环...

4

3 回答 3

1

您可以遍历 $_FILES 数组并为每个文件执行代码,如下所示:

foreach($_FILES as $file)
{
    if ($file["error"] == 0) {
        move_uploaded_file($file["tmp_name"], "path/".$file["name"]);
    }
}
于 2013-06-25T22:35:09.797 回答
0

你可以这样做

function upload_file($file, $upload_path)
{

    if($file["error"] == 0){

        $moved = move_uploaded_file($file["tmp_name"], $upload_path.$file["name"]);

        if($moved){

            return true;

        }

    }

    return false;

}

简单但适合您的需求。

于 2013-06-25T22:35:36.973 回答
0

文档:PHP 文件上传

这有效:

<?php
    if(isset($_FILES['file']['tmp_name']))
    {
        $num_files = count($_FILES['file']['tmp_name']);
        for($i=0; $i < $num_files;$i++)
        {            
            if(!is_uploaded_file($_FILES['file']['tmp_name'][$i]))
            {
                $messages[] = 'No file uploaded';
            }
            else
            {               
                if(move_uploaded_file(($_FILES['file']['tmp_name'][$i],$upload_dir.'/'.$_FILES['file']['name'][$i]))
                {                    
                    $messages[] = $_FILES['file']['name'][$i].' uploaded';
                }
                else
                {                
                    $messages[] = 'Uploading '.$_FILES['file']['name'][$i].' Failed';
                }
            }
        }
    }
?>

注意:使用 exif_imagetype()、getimagesize() 和类似方法验证文件是个好主意。除此之外的所有其他值都不$_FILES['image']['tmp_name']应该$_FILES['image']['error']被信任。它接受从浏览器发送的任何内容,并且很容易被伪造。

于 2013-06-25T22:48:18.943 回答