move_uploaded_file()正好需要2个参数,给出1

时间:2016-09-25 14:15:45

标签: php

<?php

include("mysqlconnect.php");

function GetImageExtension($imagetype)
{
    if(empty($imagetype)) return false;

    switch($imagetype)
    {
        case 'image/bmp': return '.bmp';
        case 'image/gif': return '.gif';
        case 'image/jpeg': return '.jpg';
        case 'image/png': return '.png';
        default: return false;
     }
}



if (!empty($_FILES["uploadedimage"]["name"])) {

    $file_name=$_FILES["uploadedimage"]["name"];
    $temp_name=$_FILES["uploadedimage"]["tmp_name"];
    $imgtype=$_FILES["uploadedimage"]["type"];
    $ext= GetImageExtension($imgtype);
    $imagename=date("d-m-Y")."-".time().$ext;
    $target_path = "img/".$imagename;


    if(move_uploaded_file($temp_name)) {

        $query_upload="INSERT INTO test_image ('id' ,'image', 'image_path',     'submission_date') VALUES ('".$target_path."','".date("Y-m-d")."')";

        mysqli_query($query_upload) or die("error in $query_upload == ----> ".mysqli_error());  

    }else{

        exit("Error While uploading image on the server");
    } 

}

?>
  

警告:move_uploaded_file()需要2个参数,第29行/home/u957762221/public_html/saveimage.php中给出的参数为1

尝试将图像上传到服务器时,此代码会引发错误

3 个答案:

答案 0 :(得分:2)

move_uploaded_file(string $filename, string $destination)

此功能需要第二个参数作为目标(上传文件的位置)。您刚刚给出了一个参数($temp_name,即文件名)。我在你的代码中看到类似于destination的内容,所以请尝试这样做:

if(move_uploaded_file($temp_name, $target_path)) {

答案 1 :(得分:1)

  

首先,您可能不需要GetImageExtension()功能。 PHP的pathinfo()可以很好地为你获得扩展。   无论如何;下面是move_uploaded_file($filename, $destination)的正确语法,它接受2个参数:第一个是文件名(来自$ _FILES全局)和目标(你希望保存文件的路径 - 包括文件名,虽然。

<?php

    include("mysqlconnect.php");


    if (!empty($_FILES["uploadedimage"]["name"])) { 
        $file_name      = $_FILES["uploadedimage"]["name"];
        $temp_name      = $_FILES["uploadedimage"]["tmp_name"];
        $imgtype        = $_FILES["uploadedimage"]["type"];
        $ext            = pathinfo($file_name, PATHINFO_EXTENSION); 
        $imagename      = date("d-m-Y") . "-" . time() . "." . $ext;
        $target_path    = "img/".$imagename;

        // YOU JUST FORGOT THE DESTINATION: $target_path ;-)
        if(move_uploaded_file($temp_name, $target_path)) {  
            // HERE WE USED THE IMAGE-TYPE/EXT. AS THE VALUE FOR THE TABLE-COLUMN: `image`
            // IT IS UP TO YOU TO SUBSTITUTE THE RIGHT VALUES THERE...  
            $query_upload   = "INSERT INTO test_image ('image', 'image_path', 'submission_date') VALUES ";
            $query_upload  .= "('" . $ext . "', " . $target_path . "', '".date("Y-m-d")."' )";


            mysqli_query($query_upload) or die("error in $query_upload == ----> ".mysqli_error());

        }else{      
            exit("Error While uploading image on the server");
        }

    }

答案 2 :(得分:1)

  

必须为move_upload_file()传递两个参数,否则它将在上传时指出错误。

Arg:1 file - 必填。指定要移动的文件

Arg:2 newloc - 必填。指定文件的新位置

move_uploaded_file() - 这会将文件上传到我们在目标路径中指出的服务器,以便发现图像的检索很容易,并且图像显示是通过仅上传图片的帮助。

move_uploaded_file()函数将上传的文件移动到新位置。

此函数成功时返回TRUE,失败时返回FALSE。

语法:move_uploaded_file($filename, $filepath);

哪里

$filename: $_FILES["file"]["tmp_name"];

$filepath:  is the folder where you need to upload the images.
  

mysqli_query($ conn,$ query_upload) - 它需要两个参数,一个是连接变量,另一个是用查询处理。

这里

$conn- Connection variable for the DB
$query_upload - It is the query to be executed.

用下面的代码替换你的代码。

<?php
if(move_uploaded_file($temp_name,$target_path)) {

$query_upload="INSERT INTO test_image ('image', 'image_path', 'submission_date') VALUES ('".$target_path."','".date("Y-m-d")."')";

mysqli_query($conn,$query_upload) or die("error in $query_upload == ----> ".mysqli_error());  

}else{

   exit("Error While uploading image on the server");
} 
}
?>