加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP将$_FILES和$_POST作为参数传递给函数

发布时间:2020-12-13 17:19:28 所属栏目:PHP教程 来源:网络整理
导读:我在网上搜索了使用ajax进行 PHP图片上传的代码.我发现下面附有代码.问题是我改变了一些事情(小调整)以使其在我的服务器上运行.最初它只是一个处理从表单发布的数据的php页面(不是类或函数).我把它变成了课堂然后功能.我现在正在关注OOP.我认为在从过程到OOP
我在网上搜索了使用ajax进行 PHP图片上传的代码.我发现下面附有代码.问题是我改变了一些事情(小调整)以使其在我的服务器上运行.最初它只是一个处理从表单发布的数据的php页面(不是类或函数).我把它变成了课堂然后功能.我现在正在关注OOP.我认为在从过程到OOP的转换中执行操作的最佳方法是将$_FILES和$_POST传递给方法并在内部处理它们.我认为这不起作用.看一下这个例子,请告知如何继续前进.

function uploadImageChosen($_FILES,$_POST){
            $path = "../uploads/images/";
            $valid_formats = array("jpg","png","gif","bmp");
            $connectionInstance = new ConnectionClass();
            $connectionInstance->connectToDatabase();
            $imgName;
            $imgURL;
            $imgSize;
            $imgDir = $_POST['directory'];
            if(isset($_POST) and $_SERVER['REQUEST_METHOD'] == "POST")
            {
                $name = $_FILES['photoimg']['name'];
                $imgSize = $_FILES['photoimg']['size'];
                if(strlen($name))
                {
                    list($txt,$ext) = explode(".",$name);
                    if(in_array($ext,$valid_formats))
                    {
                        if($size<(1024*1024))
                        {
                            $imgName = time().substr(str_replace(" ","_",$txt),5).".".$ext;
                            $tmp = $_FILES['photoimg']['tmp_name'];
                            if(move_uploaded_file($tmp,$path.$imgName))
                            {
                                $imgURL = $path.$imgName;
                                $connectionInstance->query("INSERT INTO imagesupload(id,title,url,size,directory) VALUES (null,'$imgName','$imgURL','$imgSize','$imgDir')");
                                //echo "<img src='uploads/".$imgName."'  class='preview'>";
                            }
                            else{
                                echo "failed";
                            }
                        }else{
                            echo "Image file size max 1 MB";                    
                        }
                    }else{
                        echo "Invalid file format..";   
                    }
            }else{
                echo "Please select image..!";
            }           

          }//end of if      

        }//end of function

至于调用类函数的页面,这里是:

<?php
    require_once("../classes/UploadImages.php");
    $uploadInstance = new UploadImages();
    $uploadInstance->uploadImageChosen($_FILES,$_POST);
    //header("LOCATION:portfolio.php");
?>

非常感谢你 :)

解决方法

$_POST和$_FILES是超全局数组,它们始终可用,并且在函数或方法中重新定义它们是一个坏主意.

你可以这样做:

$uploadInstance->uploadImageChosen();

..

function uploadImageChosen(){
           $path = "../uploads/images/";
           $valid_formats = array("jpg","bmp");
...
$name = $_FILES['photoimg']['name'];
...

或者如果您需要本地范围内的副本,请执行以下操作:

$uploadInstance->uploadImageChosen($_FILES,$_POST);

..

function uploadImageChosen($files,$post){
               $path = "../uploads/images/";
               $valid_formats = array("jpg","bmp");
...
$name = $files['photoimg']['name'];
...

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读