Arama butonu
Bu konudaki kullanıcılar: 1 misafir
3
Cevap
669
Tıklama
0
Öne Çıkarma
Dosya yükleme de dosya tipine göre kategoriye ayırmak
P
10 yıl
Çavuş
Konu Sahibi

Merhaba,

Dosya yükleme de dosya tipine göre kategoriye ayırmayı aşağıdaki kodlar ile yaptım. Sıkıntım şuradahttp://localhost/manage/yukle.php ile çalışırken aşağıdaki php kodlarım çalışıyor işlevini görüyor yalnızhttp://192.168.20.21/manage/yukle.php ile giriş işlem yapmak istediğim de php kodlar dosya tiplerini algılamıyor ve Fotoğraf olan tüm dosyaları video olarak kategori yapıyor. Dosyayı JPG olarak yüklesede sql veri tabanına video olarak kategori ettiği için dosyaları listeleme de video kategorisine atıyor.
Bu sorunu nasıl çözerim.

HTML KODU:
echo ."<form method=\"post\" enctype=\"multipart/form-data\" accept-charset=\"UTF-8\" action=\"$PHP_SELF\">" 
."<input type=\"file\" name=\"filetoupload\"><br>"
."<input type=\"hidden\" name=\"MAX_FILE_SIZE\" value=\"$size_bytes\"><br>"
."<input type=\"Submit\" name=\"uploadform\" value=\"Yükle\"></form>";

PHP KODU:
if ($_FILES["filetoupload"]["type"] == "image/pjpeg" || $_FILES["filetoupload"]["type"] == "image/jpg" || $_FILES["filetoupload"]["type"] == "image/gif" || $_FILES["filetoupload"]["type"] == "image/x-png" || $_FILES["filetoupload"]["type"] == "image/x-png") 
{
$kategori = ("fotograf");
}
else
{
$kategori = ("video");
}

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil



N
10 yıl
Yarbay

Buradan nasıl fark oluşuyor bilemem, ama sorunun ne olduğunu anlamak için;

echo $_FILES["filetoupload"]["type"];

yazarak dosya türü sonucunun ne olduğunu görebilirsiniz. Eğer boş sonuç varsa video olarak dönmesi normal.

Ben resim mi değil mi kontrolünün yeterli olmadığını düşünüyorum. image/png şeklinde de olabilir o resim. O yüzden her resim türünde image kelimesinin geçtiğini düşünerek;

$dosya_turu = $_FILES["filetoupload"]["type"];
if(preg_match('/image/i', $dosya_turu)){
$kategori = ("fotograf");
}
else {
$kategori = ("video");
}

şeklinde if düzenlemesi yaptım.



< Bu ileti tablet sürüm kullanılarak atıldı >
Bu mesaja 1 cevap geldi.
P
10 yıl
Çavuş
Konu Sahibi

quote:

Orijinalden alıntı: nihattr

Buradan nasıl fark oluşuyor bilemem, ama sorunun ne olduğunu anlamak için;

echo $_FILES["filetoupload"]["type"];

yazarak dosya türü sonucunun ne olduğunu görebilirsiniz. Eğer boş sonuç varsa video olarak dönmesi normal.

Ben resim mi değil mi kontrolünün yeterli olmadığını düşünüyorum. image/png şeklinde de olabilir o resim. O yüzden her resim türünde image kelimesinin geçtiğini düşünerek;

$dosya_turu = $_FILES["filetoupload"]["type"];
if(preg_match('/image/i', $dosya_turu)){
$kategori = ("fotograf");
}
else {
$kategori = ("video");
}

şeklinde if düzenlemesi yaptım.




Merhaba nihattr,
Teşekkür ederim hızır gibi yetiştin, şuan olay çözüldü. Bu if(preg_match('/image/i', $dosya_turu)){ preg_match ne işe yarıyor? bir de ('/image/i', bu şekilde yazılmasının sebebi nedir?

Çok çok sağ ol.

Hayırlı işler.


Bu mesaja 1 cevap geldi.
N
10 yıl
Yarbay

Merhabaaa. Rica ederim.

preg_match fonksiyonu bir içerikte istenilen/aranılan bir karakteri, karakter grubunu, tam kelimeyi, deseni vb. kontrol eder. Bu kontrol eşleştirme olarak tanımlanır. if ile yapılan sonucun olumlu olup olmadığını kontrol etmek. Dosya içerik türünde image kelimesi geçiyorsa olumlu sonuç verir. i harfi büyük küçük harf ayrımı yapmadan eşleştirmeye bakar. Yani IMAGE/PNG olsa da eşleşitme sonucu olumludur. Gerçi bu kodda olmasa da olur sanırım ama alışkanlık olmuş. :D

Mesela bir formda sadece İstanbul sabit hat numarası yazılmak zorunda olunsa sanırım kontrolü şöyle olurdu.

/^021(2|6)[0-9]{7}$/

0212 veya 0216 alan kodu yazılabilir ve 7 adet 0-9 arası rakam yazılabilir.

^ karakteri başlangıcının 021... şeklinde zorunlu olduğunu ve $ karakteri de 7 adet rakamdan sonra son bulması gerektiğini belirtir. Yani başlangıç ve bitiş sınırılarını ifade eder.

Daha çok karmaşık eşleştirmeler de var da insanın kafası karışıyor gerçekten. :D

Sorun çözüldüyse ne mutlu. İyi akşamlar.





< Bu mesaj bu kişi tarafından değiştirildi nihattr -- 25 Ocak 2016; 1:14:41 >


Bu mesajda bahsedilenler: @AthLonX2
DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.