Php ile sadece jpeg dosya yükleme kısıtlamak

5 Cevap

Birisi lütfen yardımcı olabilir? Benim sunucuya dosya yükler ve kullanıcı oturum açan her kimse için adlandırır aşağıdaki kodu var. Örneğin kullanıcı 'coca-cola-sevgilisi' bir jpeg yüklenenler - komut da jpeg 'coca-cola-lover.jpg' yeniden adlandırmak istiyorum.

Ve ayrıca 2MB dosya boyutunu sınırlamak - Benim sorunum sadece jpeg için yükleme sınırlamak gerekiyor olmasıdır.

Lütfen yardım edin - Ben bütün gece bir çözüm bulmaya çalışıyordu.

Şimdiden teşekkürler

    // Your file name you are uploading
$file_name = $HTTP_POST_FILES['ufile']['name'];
$username = $row_Recordset1['username'];

$ext = end(explode('.', $file_name));

$renamed_file_name = $username;

$new_file_name=$renamed_file_name.'.'.$ext;

//set where you want to store files
//in this example we keep file in folder upload
//$new_file_name = new upload file name
//for example upload file name cartoon.gif . $path will be upload/cartoon.gif
$path= "../sites/images/users/".$new_file_name;
if($ufile !=none)
{
if(copy($HTTP_POST_FILES['ufile']['tmp_name'], $path))
{
echo "Successful<BR/>";

//$new_file_name = new file name
//$HTTP_POST_FILES['ufile']['size'] = file size
//$HTTP_POST_FILES['ufile']['type'] = type of file
echo "File Name :".$new_file_name."<BR/>";
echo "File Size :".$HTTP_POST_FILES['ufile']['size']."<BR/>";
echo "File Type :".$HTTP_POST_FILES['ufile']['type']."<BR/>";
}
else
{
echo "Error";
}
}

5 Cevap

getimagesize dosyası ne biçim söyler

Bgy yorumuna göre, ayrıca istediğiniz ne gibi dosya uzantısını zorlamak gerekir:

 $new_file_name=$renamed_file_name.'.'.$ext; // wrong, uses data from the client

 $new_file_name=$renamed_file_name.'.jpg';   // ok, just what we want

güven ve asla müşteri tarafından sağlanan dosya isimlerini asla kullanmayın.

Ben tavsiye exif_imagetype olacaktır:

<?php
    if (exif_imagetype('image.gif') != IMAGETYPE_GIF) {
        die(The picture is not a gif');
    }

Detaylar burada bakın: http://php.net/manual/en/function.exif-imagetype.php

Sen dosyanın bir mimetype algılamak için dört herhangi birini kullanabilirsiniz:

Ayrıca MimeType from the FileUpload element sınırlayabilir, ancak bu istemci tarafında kod olduğundan, kolayca (ve aynı zamanda tarayıcılar arasında adamcağız), kötü niyetli kullanıcılar tarafından çıkarılabilir:

<input type="file" name="picture" id="picture" accept="image/jpeg"/>

Hakkında daha fazla bilgi için nasıl handle file uploads with PHP (including limiting file size), check the manual.

a lot of very similar questions on Stack Overflow zaten, bir varlık da vardır:

Sen normal mechanisms aracılığıyla boyutunu sınırlamak, ancak yüklemeden sonra, tipini belirlemek için fileinfo functions kullanmanız gerekir.