代码之家  ›  专栏  ›  技术社区  ›  Fahad Almehaini

PHP图像上传不工作

  •  0
  • Fahad Almehaini  · 技术社区  · 8 年前

    我有下面的代码,这是不是上传图像尝试了很多事情,但不工作。我无法弄清楚是什么问题,但在使用相同的代码之前登录。

    HTML表单

    <form method="post" action="" enctype="multipart/form-data" name="form1">
    <input size="25" name="file" type="file" style="font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10pt" class="box"/>
    <input type="submit" value="Upload" name="submit"/>
    </form>
    

    最后一次尝试代码如下:

    $change="";
    $abc="";
    
    
    define ("MAX_SIZE","12000");
    function getExtension($str) {
            $i = strrpos($str,".");
            if (!$i) { return ""; }
            $l = strlen($str) - $i;
            $ext = substr($str,$i+1,$l);
            return $ext;
    }
    
    $errors=0;
    
    if($_SERVER["REQUEST_METHOD"] == "POST"){
        $image =$_FILES["file"]["name"];
        $uploadedfile = $_FILES['file']['tmp_name'];
    
    
    if ($image) {
    
            $filename = stripslashes($_FILES['file']['name']);
    
            $extension = getExtension($filename);
            $extension = strtolower($extension);
    
    
    if (($extension != "jpg") && ($extension != "jpeg") && ($extension != "png") && ($extension != "gif")) {
                $change='<div class="msgdiv">Unknown Image extension </div> ';
                $errors=1;
    }else{
    $size=filesize($_FILES['file']['tmp_name']);
    
    if ($size > MAX_SIZE*1024){
        $change='<div class="msgdiv">You have exceeded the size limit!</div> ';
        $errors=1;
    }
    
    
    if($extension=="jpg" || $extension=="jpeg" ){
    $uploadedfile = $_FILES['file']['tmp_name'];
    $src = imagecreatefromjpeg($uploadedfile);
    
    }else if($extension=="png"){
    $uploadedfile = $_FILES['file']['tmp_name'];
    $src = imagecreatefrompng($uploadedfile);
    
    }else {
    $src = imagecreatefromgif($uploadedfile);
    }
    
    echo $scr;
    
    list($width,$height)=getimagesize($uploadedfile);
    
    $newwidth=1990;
    $newheight=1100;
    $tmp=imagecreatetruecolor($newwidth,$newheight);
    imagecopyresampled($tmp,$src,0,0,0,0,$newwidth,$newheight,$width,$height);
    
    $imu    =   mysql_query("select max(id)+1 as id from menu_items");
    $ints   =   mysql_fetch_array($imu);
    $chk    =   $ints['id'];
    
    $ids    =   $ints['id'];
    
    $srids  =   $ints['showroom_id'];
    
    $name = $_FILES["file"]["name"];
    $ext = end((explode(".", $name))); # extra () to prevent notice
    
    $ses_msr    =   $_SESSION['ses_member_id'];
    $folderPath = "images/rest_menu_items";
    mkdir($folderPath);
    
    $filename = "images/rest_menu_items/".$ids.'.'.$ext;
    $filename1 = "images/small". $_FILES['file']['name'];
    
    imagejpeg($tmp,$filename,100);
    mysql_query("
    UPDATE menu_items
    SET
        filename='".$ids.'.'.$ext."'
    WHERE
        id='".$_GET['id']."'
    ");
    
    imagedestroy($src);
    imagedestroy($tmp);
    }}
    
    }
    
    2 回复  |  直到 8 年前
        1
  •  0
  •   Evus    8 年前

    修复这些问题:

    第6行:

    function getExtension($str){
    

    第48行:

    echo $src; 
    

    第79行:

    mkdir($folderPath);
    

    并确保您具有写入权限。

    PHP错误日志也会有很大帮助。如果您将

    error_reporting( E_ALL );
    

    到文件的开头。

    此外,请确保您已安装 PHP GD .

    创建仅包含内容的文件。

    <?php
    phpinfo(INFO_MODULES);
    ?>
    

    应该有 GD支持启用 “如果找不到,则需要安装 it .

    write permissions 即,文件测试。txt必须存在。因此,创建一个空文件进行测试。txt进行测试。

    $filename = 'test.txt';
    if (is_writable($filename)) {
        echo 'The file is writable';
    } else {
        echo 'The file is not writable';
    }
    

    如果检查了这些内容,则以下代码将工作。

    经过测试的代码。我删除了查询和会话数据,因为我无法在没有所有代码的情况下调试它们。

    <?php
    $change="";
    $abc="";
    
    
    define ("MAX_SIZE","12000");
    function getExtension($str) {
            $i = strrpos($str,".");
            if (!$i) { return ""; }
            $l = strlen($str) - $i;
            $ext = substr($str,$i+1,$l);
            return $ext;
    }
    
    $errors=0;
    
    if($_SERVER["REQUEST_METHOD"] == "POST"){
        $image =$_FILES["file"]["name"];
        $uploadedfile = $_FILES['file']['tmp_name'];
    
    
    if ($image) {
    
            $filename = stripslashes($_FILES['file']['name']);
    
            $extension = getExtension($filename);
            $extension = strtolower($extension);
    
    
    if (($extension != "jpg") && ($extension != "jpeg") && ($extension != "png") && ($extension != "gif")) {
                $change='<div class="msgdiv">Unknown Image extension </div> ';
                $errors=1;
    }else{
    $size=filesize($_FILES['file']['tmp_name']);
    
    if ($size > MAX_SIZE*1024){
        $change='<div class="msgdiv">You have exceeded the size limit!</div> ';
        $errors=1;
    }
    
    
    if($extension=="jpg" || $extension=="jpeg" ){
    $uploadedfile = $_FILES['file']['tmp_name'];
    $src = imagecreatefromjpeg($uploadedfile);
    
    }else if($extension=="png"){
    $uploadedfile = $_FILES['file']['tmp_name'];
    $src = imagecreatefrompng($uploadedfile);
    
    }else {
    $src = imagecreatefromgif($uploadedfile);
    }
    
    echo $src;
    
    list($width,$height)=getimagesize($uploadedfile);
    
    $newwidth=1990;
    $newheight=1100;
    $tmp=imagecreatetruecolor($newwidth,$newheight);
    imagecopyresampled($tmp,$src,0,0,0,0,$newwidth,$newheight,$width,$height);
    
    imagejpeg($tmp,"Test.jpg",100);
    
    
    imagedestroy($src);
    imagedestroy($tmp);
    }}
    
    }
    ?>
    
        2
  •  0
  •   Pravin Vavadiya    8 年前

    改变 Function 语法。在后面加空格 function 关键词

    function getExtension($str){
     $i=strrpos($str,".");
     if(!$i){return"";}
     $l=strlen($str)-$i;
     $ext=substr($str,$i+1,$l);
     return$ext;
    }
    

    要获取错误,请使用下面的代码。

    if (!ini_get('display_errors')) {
        ini_set('display_errors', '1');
    }