图片上传PHP仅适用于某些图片

图片上传PHP仅适用于某些图片,php,image,upload,Php,Image,Upload,我正在尝试制作一个简单的上传表单,将图片上传到本地服务器, 它实际上可以工作,但问题是有些图片(JPG类型)无法读取。 我不知道是什么问题 处理表格的代码: <form id="addPTK" method="post" action="scripts/php/addPTK.php" enctype="multipart/form-data"> <table cellpadding=&quo

我正在尝试制作一个简单的上传表单,将图片上传到本地服务器, 它实际上可以工作,但问题是有些图片(JPG类型)无法读取。 我不知道是什么问题

处理表格的代码:

    <form id="addPTK" method="post" action="scripts/php/addPTK.php" enctype="multipart/form-data">
<table cellpadding="3px">
    <tr>
        <td>
            <div style="margin-bottom:10px;">
                <img id="noPic" src="images/contains/no-pic.jpg" style="width:148px;height:188px;border:2px solid #000" ><br>
                <input type="file" name="picPTK" style="width:55%" onchange="readURL(this)" />
                <script type="text/javascript">
                    function readURL(input) {
                        if (input.files && input.files[0]) {
                            var reader = new FileReader();
            
                            reader.onload = function (e) {
                                $('#noPic').attr('src', e.target.result);
                            }
            
                            reader.readAsDataURL(input.files[0]);
                        }
                    }
                </script>
            </div>
            </td>
        </tr>
    </table>
</form>
它显示了成功

Pic Name : 3dpencil10.jpg
Pic Type : image/jpeg
Pic Temp : C:\xampp\tmp\phpFBAD.tmp
Pic Size : 101632
Error file (var_dump) : int(0) << error shows (0) (i think it means (false)
Pic名称:3dpencil10.jpg
图片类型:图像/jpeg
Pic Temp:C:\xampp\tmp\phpFBAD.tmp
图片尺寸:101632

错误文件(var_dump):int(0),除非您有其他代码

$ftExt = array('jpeg', 'jpg', 'png');
请记住,如果没有strtolower文本

.JPG与.JPG不同

您可以使用不同的方法,如1:

$ftExt = array('jpeg', 'jpg', 'png', 'JPG');

或者降低文件名

可能是因为文件大小

您可以尝试在
php.ini中设置以下值

upload_max_filesize = 10M
post_max_size = 10M

你能给我们发送未上传图像的特征(文件大小、文件名)吗

正如其他人指出的,扩展验证可能是问题的原因,您可以通过这种方式轻松解决:

in_array(strtolower($ext), $ftExt)
但文件大小也可能是一个问题,因为在大多数系统上(共享主机计划非常典型),文件大小的最大限制为2M(这就是为什么你经常看到网站限制你可以上传的图像大小)

如果我记得清楚的话,$\u FILES数组包含一个错误索引,因此请尝试执行以下操作:

print_r($_FILES)

并为我们提供未上传图像的结果。

你好,马可,谢谢回答。我尝试了这两种,但它仍然没有显示类型,但图像上传正确吗?你能给我们看一下上传代码吗?我已经添加了我使用的整个脚本,不介意文件名,因为我之前使用的那个只是在Michael建议之后,最后检查您是否限制了最大上载大小以及一次可以上载多少文件,然后将
$\u POST
值设置到
$\u SESSION
数组中,以便稍后清除它们?不,我没有,我这样做是因为进程脚本位于不同的文件中,当它显示错误时,textbox或其他的值将消失,所以我使用session来保持它有点棘手。这只是因为我不知道如何保持它使用另一种方式你只需执行
$\u session['post\u data']=$\u post
就可以节省很多,我认为问题不是由大小引起的,因为错误是“header”('Location:..//dashboard.php?panel=ptk&warn=12');”,这意味着文件的类型不是图片类型数组([fotoPTK]=>Array([name]=>IMG_0668.JPG[type]=>[tmp_name]=>[error]=>1[size]=>0))这是我打印时得到的,我也已经像Michael说的那样设置了我的php.ini。然后,使用此链接匹配相应的错误(如果无法修复错误,请向用户打印适当的消息)。在您的情况下,这确实是一个文件大小的问题。那么您的意思是我需要更改我的php.ini吗?这是我的php.ini;上传文件的最大允许大小。。upload_max_filesize=10M;通过单个请求可以上传的最大文件数max_file_uploads=20,我的图片文件只有大约3.5 MB。。hmmm常见的托管类型是什么n您是专用的还是共享的?如果您是专用的,那么更改php.ini并重新启动apache服务就足够了。在共享计划中,有时您根本无法修改php.ini。您应该查看主机的常见问题解答。将来?此网站将只在内部网中运行…我将首先尝试重新启动我的xampp。。
<?php
/**
* ========= CREDIT GOES TO :==============
* Author : Ardian Septiadi AR a.k.a Refs
* Name : addPTK.php
* Version : V.01
* =======================================
*/
session_start();
if((isset($_SESSION['usercode'])) && (!empty($_SESSION['usercode']))){
    try{
        include_once dirname(__FILE__).DIRECTORY_SEPARATOR.'class.Table.php';
        include_once dirname(__FILE__).DIRECTORY_SEPARATOR.'fungsi.php';
        // Manipulasi SESSION
            $_SESSION['nik'] = trim($_POST['nik']);
            $_SESSION['namaPTK'] = trim($_POST['namaPTK']);
            $_SESSION['jkPTK'] = trim($_POST['jkPTK']);
            $_SESSION['unitPTK'] = trim($_POST['unitPTK']);
            $_SESSION['jabatan'] = trim($_POST['jabatan']);
            $_SESSION['alamatPTK'] = trim($_POST['alamatPTK']);
            $_SESSION['pdkTerakhir'] = trim($_POST['pdkTerakhir']);
            $_SESSION['gelar'] = trim($_POST['gelar']);
            $_SESSION['kawin'] = trim($_POST['kawin']);
            //Rubah Telp
            $telpPtk = noTelp(trim($_POST['telpPtk']));
            $_SESSION['telpPtk'] = $telpPtk;
            //Rubah Tgl Lahir
            $tglLahir = rubahTgl(trim($_POST['tglLahir']));
            $_SESSION['tglLahir'] = $tglLahir;
            //Username
            if(isset($_POST['hakAkses']) && $_POST['hakAkses'] == 1){
                $_SESSION['hakAkses'] = $_POST['hakAkses'];
            }
        // Batas
        // Untuk Data Pribadi
        $objAddPtk = new Table('PTK');  
        // Variabel Foto
            $nmFoto = $_FILES['fotoPTK']['name'];
            $tyFoto = $_FILES['fotoPTK']['type'];
            $szFoto = $_FILES['fotoPTK']['size'];
            $erFile = $_FILES['fotoPTK']['error'];
            $temp = $_FILES['fotoPTK']['tmp_name'];
            $tyFoto = $_FILES['fotoPTK']['type'];
            $dir = '../../images/ptk/';
            $ftExt = array('jpeg', 'jpg', 'png' , 'JPEG', 'JPG', 'PNG');
            $ftTemp = explode('.' , $nmFoto);
            $ext = end($ftTemp);
        // Proses Connect
        if ($objAddPtk->connect()) {
            if($nmFoto=='' 
                OR $_POST['nik']=='' 
                OR $_POST['namaPTK']=='' 
                OR $_POST['jkPTK']=='' 
                OR $_POST['unitPTK']==''  
                OR $_POST['jabatan']=='' 
                OR $_POST['tglLahir']==''
                OR $_POST['telpPtk']=='' 
                OR $_POST['alamatPTK']=='' 
                OR $_POST['pdkTerakhir']=='' 
                OR $_POST['gelar']=='' 
                OR $_POST['kawin']==''){
                    header('Location: ../../dashboard.php?panel=ptk&warn=1');
            }elseif(!preg_match("#[0-9]+#", $_POST['nik'])){
                header('Location: ../../dashboard.php?panel=ptk&warn=8');
            }elseif(!preg_match("#[0-9]+#", $_POST['telpPtk'])){
                header('Location: ../../dashboard.php?panel=ptk&warn=9');
            }else{
                // Upload Foto
                if((($tyFoto=='image/jpeg') 
                    || ($tyFoto=='image/jpg') 
                    || ($tyFoto=='image/pjpg') 
                    || ($tyFoto=='image/x-png') 
                    || ($tyFoto=='image/png')
                    || ($tyFoto=='IMAGE/JPG') 
                    || ($tyFoto=='IMAGE/PJPG') 
                    || ($tyFoto=='IMAGE/X-PNG') 
                    || ($tyFoto=='IMAGE/PNG')) 
                    && ($szFoto < 5000000) 
                    && in_array($ext, $ftExt))
                    {
                        // Set nama baru foto
                        $fileBaru = $_SESSION['namaPTK'].'-'.$_SESSION['nik'].'.'.$ext;
                        // Kondisi penyimpanan Data
                        if($erFile > 0){
                            header('Location: ../../dashboard.php?panel=ptk&warn=10');
                        }else{
                            if(file_exists($dir.$fileBaru)){
                                header('Location: ../../dashboard.php?panel=ptk&warn=11');
                            }elseif(isset($_SESSION['hakAkses']) && !empty($_SESSION['hakAkses'])){
                                // Manipulasi Username
                                $username = explode(' ', $_POST['namaPTK'], 3);
                                $rand = rand(1111, 9999);
                                $user = $username[0].$_POST['unitPTK'].$rand;
                                // Batas                                
                                $savePtk = $objAddPtk->save(array(
                                    'NIK' => $_SESSION['nik'],
                                    'PIC_PTK' => trim($fileBaru),
                                    'NM_PTK' => $_SESSION['namaPTK'],
                                    'JK_PTK' => $_SESSION['jkPTK'],
                                    'POSISI' => $_SESSION['unitPTK'],
                                    'JABATAN' => $_SESSION['jabatan'],
                                    'TGLLAHIR_PTK' => trim($_SESSION['tglLahir']),
                                    'NOTLP_PTK' => trim($_SESSION['telpPtk']),
                                    'ALAMAT_PTK' => trim($_SESSION['alamatPTK']),
                                    'STATUS_PTK' => $_SESSION['statusKaryawan'],
                                    'TMT' => $_SESSION['TMT'],
                                    'AKHIR_PROBATION' => $_SESSION['akhirProbation'],
                                    'STATUS_KAWIN' => $_SESSION['kawin'],
                                    'PDK_TERKAHIR' => $_SESSION['pdkTerakhir'],
                                    'GELAR_AKADEMIK' => $_SESSION['gelar'],
                                    'TGL_REGISTRASI' => date('Y-m-d'),
                                    'USERNAME' => trim($user),
                                    'PASSWORD' => md5(trim($user)),
                                    'LEVEL_AKSES' => 'Operator',
                                ));
                                move_uploaded_file($temp,$dir.$fileBaru);
                                // Manipulasi SESSION
                                $_SESSION['nik'] = '';
                                $_SESSION['namaPTK'] = '';
                                $_SESSION['jkPTK'] = '';
                                $_SESSION['unitPTK'] = '';
                                $_SESSION['jabatan'] = '';
                                $_SESSION['tglLahir'] = '';
                                $_SESSION['telpPtk'] = '';
                                $_SESSION['alamatPTK'] = '';
                                $_SESSION['statusKaryawan'] = '';
                                $_SESSION['TMT'] = '';
                                $_SESSION['akhirProbation'] = '';
                                $_SESSION['kawin'] = '';
                                $_SESSION['pdkTerakhir'] = '';
                                $_SESSION['gelar'] = '';
                                // Batas
                                header('Location: ../../save_success.php'); 
                            }else{
                                $savePtk = $objAddPtk->save(array(
                                    'NIK' => $_SESSION['nik'],
                                    'PIC_PTK' => trim($fileBaru),
                                    'NM_PTK' => $_SESSION['namaPTK'],
                                    'JK_PTK' => $_SESSION['jkPTK'],
                                    'POSISI' => $_SESSION['unitPTK'],
                                    'JABATAN' => $_SESSION['jabatan'],
                                    'TGLLAHIR_PTK' => trim($_SESSION['tglLahir']),
                                    'NOTLP_PTK' => trim($_SESSION['telpPtk']),
                                    'ALAMAT_PTK' => trim($_SESSION['alamatPTK']),
                                    'STATUS_PTK' => $_SESSION['statusKaryawan'],
                                    'TMT' => $_SESSION['TMT'],
                                    'AKHIR_PROBATION' => $_SESSION['akhirProbation'],
                                    'STATUS_KAWIN' => $_SESSION['kawin'],
                                    'PDK_TERKAHIR' => $_SESSION['pdkTerakhir'],
                                    'GELAR_AKADEMIK' => $_SESSION['gelar'],
                                    'TGL_REGISTRASI' => date('Y-m-d'),
                                ));
                                move_uploaded_file($temp,$dir.$fileBaru);
                                // Manipulasi SESSION
                                $_SESSION['nik'] = '';
                                $_SESSION['namaPTK'] = '';
                                $_SESSION['jkPTK'] = '';
                                $_SESSION['unitPTK'] = '';
                                $_SESSION['jabatan'] = '';
                                $_SESSION['tglLahir'] = '';
                                $_SESSION['telpPtk'] = '';
                                $_SESSION['alamatPTK'] = '';
                                $_SESSION['statusKaryawan'] = '';
                                $_SESSION['TMT'] = '';
                                $_SESSION['akhirProbation'] = '';
                                $_SESSION['kawin'] = '';
                                $_SESSION['pdkTerakhir'] = '';
                                $_SESSION['gelar'] = '';
                                // Batas
                                header('Location: ../../save_success.php');
                            }
                        }
                }else{
                    header('Location: ../../dashboard.php?panel=ptk&warn=12');  
                }
            }
        }
    }catch(Exception $e){
        echo 'Error: '.$e->getMessage();
    }
}else{
    header('Location: ../../index.php');    
}
$ftExt = array('jpeg', 'jpg', 'png');
$ftExt = array('jpeg', 'jpg', 'png', 'JPG');
upload_max_filesize = 10M
post_max_size = 10M
in_array(strtolower($ext), $ftExt)
print_r($_FILES)