在PHP中重用代码(函数?)

时间:2013-06-25 22:32:22

标签: php

得到了这段代码:

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循环...

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分: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;

}

简单但适合您的需求。

答案 2 :(得分:0)

文档:PHP File Uploads

这有效:

<?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']之外的其他所有值都不应该值得信赖。它需要从浏览器发送的任何内容,并且很容易被伪造。