php中move_uploaded_file()函数的问题

发布于 2024-08-23 08:41:51 字数 2820 浏览 6 评论 0原文

我在 apache localhost 中运行了代码,并在我的主机中进行了尝试。在这两个方法中,该方法移动了文件,但文件看起来为 0kb。

这是代码:

if(isset($_POST['upload'])){

    if($_FILES['profile_foto']['size']>0&&$_FILES['profile_foto']['size']<102400){

        $image_extension=explode("/",$_FILES['profile_foto']['type']);

        if($image_extension[1]!="jpeg")
            echo "<script type='text/javascript'>alert('The extension of the profile image must be jpeg!!!')</script>";

        else{

            if($_POST['image_id']==""){

                $image_id= md5(uniqid());

                $_FILES['profile_foto']['name']="tempo/".$image_id.".jpg";

                move_uploaded_file($_FILES['profile_foto']['temp_name'],$_FILES['profile_foto']['name']);

                list($width,$height)=getimagesize("tempo/".$image_id.".jpg");

                if($width<=0||$width>170||$height<=0||$height>200){

                    $myFile="tempo/".$image_id.".jpg";
                    $fh=fopen($myFile,'w') or die("The File could not be opened!!!");
                    fclose($fh);
                    unlink($myFile);

                    echo "<script type='text/javascript'>alert('The width of your profile image must be less than 170 px, the height must be less than 200 px!!!')</script>";

                }
                else
                    $_POST['image_id']=$fotograf_id;

            }
            else{

                $image_id= md5(uniqid());

                $_FILES['profile_foto']['name']="tempo/".$image_id.".jpg";

                move_uploaded_file($_FILES['profile_foto']['temp_name'],$_FILES['profile_foto']['name']);

                list($width,$height)=getimagesize("tempo/".$image_id.".jpg");

                if($width<=0||$width>170||$height<=0||$height>200){

                    $myFile="tempo/".$image_id.".jpg";
                    $fh=fopen($myFile,'w') or die("The File could not be opened!!!");
                    fclose($fh);
                    unlink($myFile);

                    echo "<script type='text/javascript'>alert('The width of your profile image must be less than 170 px, the height must be less than 200 px!!!')</script>";

                }
                else{
                    $image_will_be_deleted=$_POST['image_id'];

                    $myFile="tempo/".$image_will_be_deleted.".jpg";
                    $fh=fopen($myFile,'w') or die("The File cannot be opened!!!");
                    fclose($fh);
                    unlink($myFile);
                    $_POST['image_id']=$image_id;

                }
            }
        }
    }
    else
        echo "<script type='text/javascript'>alert('The size of the profile image must be less than 100 kb!!!')</script>";

}

I ran the code in apache localhost and also tried in my host. In both of them, the method moved the file but the file seemed 0kb.

Here is the code:

if(isset($_POST['upload'])){

    if($_FILES['profile_foto']['size']>0&&$_FILES['profile_foto']['size']<102400){

        $image_extension=explode("/",$_FILES['profile_foto']['type']);

        if($image_extension[1]!="jpeg")
            echo "<script type='text/javascript'>alert('The extension of the profile image must be jpeg!!!')</script>";

        else{

            if($_POST['image_id']==""){

                $image_id= md5(uniqid());

                $_FILES['profile_foto']['name']="tempo/".$image_id.".jpg";

                move_uploaded_file($_FILES['profile_foto']['temp_name'],$_FILES['profile_foto']['name']);

                list($width,$height)=getimagesize("tempo/".$image_id.".jpg");

                if($width<=0||$width>170||$height<=0||$height>200){

                    $myFile="tempo/".$image_id.".jpg";
                    $fh=fopen($myFile,'w') or die("The File could not be opened!!!");
                    fclose($fh);
                    unlink($myFile);

                    echo "<script type='text/javascript'>alert('The width of your profile image must be less than 170 px, the height must be less than 200 px!!!')</script>";

                }
                else
                    $_POST['image_id']=$fotograf_id;

            }
            else{

                $image_id= md5(uniqid());

                $_FILES['profile_foto']['name']="tempo/".$image_id.".jpg";

                move_uploaded_file($_FILES['profile_foto']['temp_name'],$_FILES['profile_foto']['name']);

                list($width,$height)=getimagesize("tempo/".$image_id.".jpg");

                if($width<=0||$width>170||$height<=0||$height>200){

                    $myFile="tempo/".$image_id.".jpg";
                    $fh=fopen($myFile,'w') or die("The File could not be opened!!!");
                    fclose($fh);
                    unlink($myFile);

                    echo "<script type='text/javascript'>alert('The width of your profile image must be less than 170 px, the height must be less than 200 px!!!')</script>";

                }
                else{
                    $image_will_be_deleted=$_POST['image_id'];

                    $myFile="tempo/".$image_will_be_deleted.".jpg";
                    $fh=fopen($myFile,'w') or die("The File cannot be opened!!!");
                    fclose($fh);
                    unlink($myFile);
                    $_POST['image_id']=$image_id;

                }
            }
        }
    }
    else
        echo "<script type='text/javascript'>alert('The size of the profile image must be less than 100 kb!!!')</script>";

}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

伴随着你 2024-08-30 08:41:51

当您声称只有一行代码不起作用时,您已经发布了大约 50 行代码。去掉 50 行代码并将其替换为:

move_uploaded_file($_FILES['profile_foto']['temp_name'],'tempo/test.jpg');

....并了解当您尝试上传文件时会发生什么。

C.

You've posted about 50 lines of code when you claim only one isn't working. Strip out the 50 lines of code and replace it with:

move_uploaded_file($_FILES['profile_foto']['temp_name'],'tempo/test.jpg');

....and find out what happens when you try to upload a file.

C.

拧巴小姐 2024-08-30 08:41:51

我认为

$_FILES['profile_foto']['temp_name']

应该

$_FILES['profile_foto']['tmp_name']

在声明中

move_uploaded_file($_FILES['profile_foto']['temp_name'], $_FILES['profile_foto']['name']);

I think

$_FILES['profile_foto']['temp_name']

ought to be

$_FILES['profile_foto']['tmp_name']

in the statement

move_uploaded_file($_FILES['profile_foto']['temp_name'], $_FILES['profile_foto']['name']);
-黛色若梦 2024-08-30 08:41:51

如果您想要一个小功能来方便地将照片大小调整为如下所示。如果仅提供了 $size1,则图像将使用它作为其最大尺寸来调整大小,否则,如果提供了 $size2,则图像将使用 $size1 作为其最大尺寸按比例调整大小,然后裁剪其余部分。可能比你的 ($width<=0||$width>170||$height<=0||$height>200) 更容易:

function resizeImg($name, $extension, $size1, $size2) {
    if (preg_match('/jpg|jpeg/',$extension)){
        $image = imagecreatefromjpeg($name);
    }
    if (preg_match('/gif/',$extension)){
        $image = imagecreatefromgif($name);
    }

    $old_width = imageSX($image);
    $old_height = imageSY($image);
    $old_aspect_ratio = $old_width/$old_height; 

    if($size2 == 0){
        $new_aspect_ratio = $old_aspect_ratio;
        if($old_width > $old_height){
            $new_width = $size1;
            $new_height = $new_width / $old_aspect_ratio;
        } else {
            $new_height = $size1;
            $new_width = $new_height * $old_aspect_ratio;
        }
    } elseif($size2 > 0){
        $new_aspect_ratio = $size1/$size2;
        //for landscape potographs
        if($old_aspect_ratio >= $new_aspect_ratio) {
            $new_width = $size1;
            $new_height = $size2;
            $x1 = round(($old_width - ($old_width * ($new_aspect_ratio/$old_aspect_ratio)))/2);
            $old_width = round($old_width * ($new_aspect_ratio/$old_aspect_ratio));
            $y1 = 0;
            //for portrait photographs
        } else{
            $new_width = $size1;
            $new_height = $size2;
            $x1 = 0;
            $y1 = round(($old_height/2) - ($new_height/2));
            $old_height = round($old_width/$new_aspect_ratio);
        }
    }

    $new_image = imagecreatetruecolor($new_width, $new_height);
    imagecopyresized($new_image, $image, 0, 0, $x1, $y1, $new_width, $new_height, $old_width, $old_height);

    return $new_image;
}

If you want a little function to conveniently resize you photos to whatever see below. if only $size1 is provided the image will be resized using this as its largest dimension, otherwise if $size2 is provided the image will be resized proportionally using $size1 as its largest dimension and then the rest is cropped. Might make it easier than your ($width<=0||$width>170||$height<=0||$height>200):

function resizeImg($name, $extension, $size1, $size2) {
    if (preg_match('/jpg|jpeg/',$extension)){
        $image = imagecreatefromjpeg($name);
    }
    if (preg_match('/gif/',$extension)){
        $image = imagecreatefromgif($name);
    }

    $old_width = imageSX($image);
    $old_height = imageSY($image);
    $old_aspect_ratio = $old_width/$old_height; 

    if($size2 == 0){
        $new_aspect_ratio = $old_aspect_ratio;
        if($old_width > $old_height){
            $new_width = $size1;
            $new_height = $new_width / $old_aspect_ratio;
        } else {
            $new_height = $size1;
            $new_width = $new_height * $old_aspect_ratio;
        }
    } elseif($size2 > 0){
        $new_aspect_ratio = $size1/$size2;
        //for landscape potographs
        if($old_aspect_ratio >= $new_aspect_ratio) {
            $new_width = $size1;
            $new_height = $size2;
            $x1 = round(($old_width - ($old_width * ($new_aspect_ratio/$old_aspect_ratio)))/2);
            $old_width = round($old_width * ($new_aspect_ratio/$old_aspect_ratio));
            $y1 = 0;
            //for portrait photographs
        } else{
            $new_width = $size1;
            $new_height = $size2;
            $x1 = 0;
            $y1 = round(($old_height/2) - ($new_height/2));
            $old_height = round($old_width/$new_aspect_ratio);
        }
    }

    $new_image = imagecreatetruecolor($new_width, $new_height);
    imagecopyresized($new_image, $image, 0, 0, $x1, $y1, $new_width, $new_height, $old_width, $old_height);

    return $new_image;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文