eburhan Upload class
Web sitesi hazırlarken upload işlemlerinde gerekli önlemleri almazsak daha sonra istenmeyen sonuçlarla karşılaşabiliriz. Örneğin kötü niyetli birisi “hack.php” gibi bir dosyayı yükleyip çalıştırırsa web sitemizi hack edebilir. Veyahut geçerli bir resim dosyası olmadığı halde “resim.gif” gibi bir dosyayı yükleyebilir. Buna benzer problemlerin önüne geçmek için PHP diliyle bir upload sınıfı hazırladım.
Sınıfın en önemli özellikleri
- Belirttiğiniz dosya türleri dışında dosyaların yüklenmesine izin vermez
- Yüklenen dosyalarda “resim” dosyaları varsa, her birinin gerçekten bir resim dosyası olup olmadığını otomatik olarak kontrol eder.
- Yüklenecek dosyaları istediğiniz klasöre kaydedebilirsiniz. Klasör yoksa sizin yerinize oluşturmayı dener ve “chmod” ayarını yapmaya çalışır.
- Aynı anda kaç adet dosyanın yükleneceğini ayarlayabilirsiniz. Örneğin; tek bir yükleme işleminde en az 5, en fazla 15 dosya yüklenebilsin gibi…
- Yüklenen dosyaların boyutlarını sınırlandırabilirsiniz. Örneğin; yüklenmek istenen herbir dosyanın boyutu en az 10, en fazla 100 KB olsun gibi…
- Yüklenen dosyaları yeniden isimlendirebilirsiniz. Ayrıca yüklenen her bir dosya için benzersiz isimler de oluşturabilirsiniz.
- Dosya isimlerinin başına veya sonuna bir ifade ekleyebilirsiniz.
- Bütün kotroller sunucunun “geçiçi” klasöründe yapılır. Herhangi bir sorun oluşmazsa, dosyaları istediğiniz klasöre taşıyabilirsiniz.
Sınıfın kullanımı
ilk önce upload işleminin yapılabilmesi için bir upload formu hazırlamamız gerekiyor. Alttaki kodlarla basit bir upload formu oluşturabiliriz.
<html>
<body>
<form method="post" action="yukle.php" enctype="multipart/form-data"><input type="hidden" name="phpMyAdmin" value="sTfRvBzMpHQj7RuyjeTqJbvr0wb" />
<input name="dosyalar[]" type="file" />
<br>
<input name="dosyalar[]" type="file" />
<br>
<input name="dosyalar[]" type="file" />
<br>
<button name="submit" type="submit">Yükle</button>
</form>
</body>
</html>
Yukarıdaki kodların ekran görüntüsü aşağıdaki resimdeki gibi görünecektir.

Bu upload formunu işlemek için eburhan Upload class‘ı şöyle kullanabilirsiniz.
<?php
// sınıfı çağır
require_once('eb.upload.php');
// yüklenecek dosyalar varsa devreye gir
if( $_FILES )
{
// sınıfı hazırla
$up = new UPLOAD( $_FILES['dosyalar'] );
// yüklenecek dosyalar hangi klasöre kayıt edilecek
$up->yolDizin('./upload');
// 100 KB'a kadar olanlara izin ver
$up->maxBoyut(100);
// izin verilecek dosya türleri
$up->tipKabul('gif,jpg,png');
// yükleme işlemini başlat
if( $up->baslat() === FALSE ) {
echo $up->sonHata();
} else {
echo 'Dosyalar başarıyla yüklendi';
}
}
?>
Yukarıdaki kodda yüklenmek istenen dosyaların upload isimli klasöre kaydedilmesini sağlıyoruz. Daha sonra herbir dosya boyutunun en fazla 100 KB olabileceğini ve sonra yüklenmek istenen dosyaların gif, jpg, png formatlarında olabileceğini belirtiyoruz.
Sonuç…
Hazırlamış olduğum eburhan Upload class sınıfının yetenekleri burada anlattığımla sınırlı değil. Daha fazla bilgi almak isteseniz alttaki bağlantıdan bu sınıfı indirebilirsiniz. indireceğiniz dosya içerisinde ayrıntılı bir dökümantasyon mevcut. Bu dokümantasyon, sınıf hakkında merak ettiklerinize büyük bir ihtimal cevap verecektir. Yine de sormak istedikleriniz olursa bana istediğiniz zaman ulaşabilirsiniz















öncelikle eline sağlık
ancak bir eksik var sanırım ya da ben işin içinden çıkamadım:
mesela izin verilen dosya tipleri rar,zip,jpg,gif olsun. bu durumda rar dosyaları da _imgKontrol’den geçiyor ve resim olmadığı için hata alıyor ve sonuçta hiç bir dosya yüklenmiyor…
Güzel hazırlanmış bir class. Teşekkürler.
@bocek
Uyarın için teşekkürler.
imgKontrol() fonksiyonuna gerekli kodları yazmayı unutmuşum (: şimdi düzelttim.
Yeniden indirip test edersen sevinirim
Daha denemedim ama amacınızı buradan tebrik etmek istiyorum.
Ben sadece blog işiyle uğraştığım için işime yaramıyor ama güvenliği nasıl artırırım diyenler için faydalı bir yazı..
Türkçe bloglar arasında en faydalılardan birisi. Rüya tabiri, fıkra olmadan da şahane bir blog olabiliyormuş. Eline sağlık…
Güzel olmuş ellerine sağlık fakat tür jpg veya gif ise resize ettirilebilirdi. ellerine sağlık tekrardan. benim ki fikir tabi oturup birtane de ben yazayım.
@Coder
Resim boyutlandırmayı bilerek eklemedim çünkü bu sınıfın görevi “yalnızca sunucuya dosya yüklemek” olsun istedim.
Ayrıca ben resim işlemleri için yine kendi yazdığım ayrı bir sınıf kullanıyorum. ileride yayınlarım belki. Ama siz bu upload sınıfını “miras alarak” resim boyutlandırma yeteneği kazandırabilirsiniz.
Teşekkurler Güzel çalışma
Açıkçası kendim yazacaktım php classısta arayim derken
Türk mucit yapıvermiş.
Merhaba, class’inizi kendi yazdigim bir icerik yönetim sisteminde kullaniyorum.
tipKabul() fonksiyonunda dosya uzantilari yerine mime-type’lara göre kontrol ettirseniz olmaz mi? Bazi resimlerin uzantilari resmin gercek tipinden farkli olabiliyor.
@Leon
Öncelikle class’ı kullandığın için teşekkürler. Soruna gelince…
Mime-type ile kontrol ettirmek bana göre güvenli değildir. Çünkü bir dosyanın mime-type’ını kolayca değiştirebiliyorsun. Böylece olunca gerçekte PHP olan bir dosyayı PNG resmiymiş gibi yükletebilirsin.
Ayrıca bu class yüklenmek istenen dosyalardan hangilerinin gerçekten resim olup olmadığını kendisi otomatik olarak kontrol ediyor. Senin ekstra birşey yapmana gerek yok yani
peki bu upload’dan sonra linki falan nasıl göstercez onları da yazsaydın keşke.
@YuqseLx
Ne linki acaba? Biraz daha açıklayıcı yazarsan sevinirim.
yani upload ettikten sonra resmin gösterim şekilleri imageshack.us’taki gibi
Hocam güzel bir class olmuş demin kullandım bir işimde. yanlız, bu upload edilen dosyanın adını nasıl alabiliriz, böyle bir imkanımız olabilir mi ?
2 ufak hata bildirmek istiyorum:
1. _dosyaIsmiTemizle() fonksiyonunda “ü” ve “Ü” harfleri “u” harfi yerine “y” harfine dönüştürülüyor. klavyede “u” ve “y” yanyana olduğu için bir hata yapılmış sanırım.
2. yine _dosyaIsmiTemizle() fonksiyonunda “$onlyName” değişkeni ile ilgili bir sorun var. Eğer yüklemek istediğim dosyanın uzantısı, dosya isminde de geçiyorsa sorun oluşuyor. Örneğin: “bu.bir.jpg.dosyası.jpg” isminde bir resim yüklemek istersem “bu_bir.jpg” şekline dönüşüyor. Çünkü “$onlyName” explode() ile bulunuyor ve bu da bu çeşit bir hataya sebep oluyor.
Çok güzel bir class olduğunu belirtmek isterim
$up->yeniAd();
bu fonksiyonu dizi halinde çalıştırmak isterseniz
class yapısında fonksiyonda else parametresindeki $ad kısmına [$i] demek yeterli oluyo bunu farkettim paylaşmak istedim ellerine sağlık.
Yorumlarınızın hepsini not ettim. Birkaç gün içerisinde yeni bir güncelleme yayınlayacağım. Class’ı kullandığınız için teşekkürler
Selamlar,
Kontroller için Erişim kontrol listesi tarzında yapsan daha hoş olurdu..
@Onur Yerlikaya
Nasıl mesela? Bir örnek gösterebilir misin?
Öncelikle çok güzel ve düzenli kodlanmış bu sınıfı yazdığınız için çok çok teşekkürler. Ufak bir önerim olacak:
Dosya tür kontrollerinde uzantılardan ziyade MIME tür kontrolü baz alınsa daha iyi olur gibime geliyor, biliyorum resim dosyaları için bu yapılmış durumda zaten ama bilinen sıkça kullanılan dosya türleri için de bu tip kontrol desteklense daha iyi olur kanımca…
Saygılarımla…
Çok güzel bir çalışma gerçekten ellerinize ve gözlerinize sağlık.
Fakat benim sormak istediğim birşey var. Bu sınıfınızı jquery’nin ajax fonksiyonu ile kullanmak istediğimde formu serialize yaptığım zaman ne yazık ki dosya bilgileri hariç bütün bilgileri alabiliyorum formdan. Çözüm için bir öneriniz var mı acaba? Ne yazık ki basit bir çözüm bulamadım.
@tmrtzcn
Ajax ile dosya gönderirken farklı bir yol izlemen gerekiyor. Aşağıdaki linkten bu konuda bilgi alabilirsin.
http://ajax-tr.com/ajax-ile-dosya-gondermek/
peki bir sunucudan kendi sunucumuza dosya çekmek istersek nasıl olacak ? nasıl yapabiliriz ?
@ahmet
sunucudaki bir dosyayı kaydetmek için php’nin yerleşik “file_get_contents” fonksiyonunu kullanabilirsin. Veya cURL eklentisi etkinse onu da kullanabilirsin. şurada örnek bir kod var.
güzel düşünülmüş ve yazılmış bir sınıf. Kodlama stilide oldukça hoş.. Yanlız benim bir sorunum oldu.
function VideoUpload()
{
global $videodosyasi;
$up = new eb_UPLOAD( $_FILES['video'] );
$up->yolDizin(‘../../xvideo’);
$up->maxBoyut(100000000);
$up->minDosya(1);
$up->tipKabul(‘gif, jpg, png, wma, flv, swf, mp3, avi, mpeg’);
if( $up->baslat() === FALSE ) {
echo $up->sonHata();
} else {
$videodosyasi = $up->yeniAd();
//echo ‘Dosyalar başarıyla yüklendi’;
}
}
biçiminde kullandım. Küçük boyutlu dosyalarda herhangi bir sorun yaşamazken 10 mb civarı örneğin flv dosyalarda upload gerçekleşmiyor. işlemi lokal sunucuda yapıyorum. Yani web üzerinde de değil. Sebebi ne olabilir ?
öncelikle s.a @eburhan paylaşımın gerçekten güzel ellerine sağlık bir yerde takıldım sormam gerekiyor;
“var $_bilgiVer = array();”
burada yüklendikten sonra array olarak veriyor bunun diğer yolları var mı alt alta yazması gibi ?
@cemaliozan
php.ini dosyasında upload_max_filesize ayarı vardır. Upload edilebilecek maksimum dosya boyutunu belirler. Ve bu ayar varsayılan olarak 2 MB değeriyle çalışır. O yüzden 2 MB’ı aşan dosyaları upload edememeniz doğal.
@YuqseLx
alt alta yazdırmak için foreach döngüsü kullanabilirsin. Örnek:
Bu şekilde upload edilmiş dosyanın bilgilerini alt alta yazdırabilirsin.
çok teşekkür ederim
Bence bu upload class ı biraz daha geliştirip jQuery için bir plugins haline getirmelisin. Ellerine sağlık gerçekten çok güzel olmuş.
Elinize sağlık. Benimde kafama taklıan bir kısım oldu. Bu izin verilen dosyaları upload etmesinde dosyaların uzantılarına bakıyor, bu yüzden birisi bir başka dosyanın uzantısını değiştirerek upload edilmesini sağlayabilir. Bu yüzden dosyanın adındaki uzantıya değilde, $_FILES['type'] üzerinden tipi tam belirlense daha makbul olur.
Bu güzel sınıf için öncelikle teşekkür ederim.
Wordpress için bir resim gönderme eklentisi yazmayı düşünüyorum. Eklentide sizin sınıfınızı kullanarak resmi upload etmeyi ardından bunu e-posta olarak kendime yollatmayı düşünüyorum.
Bunu yaparken dosyayı ismini $up->yeniAd( true ); fonksiyonu ile rastgele belirliyorum, maksimum dosya adedini 1 olarak ayarladım, dosya boyutunu 300 KB’de sınırladım, dosya tipi olarak jpg ve jpeg sınırı koydum, e-posta ile resmi yolladıktan sonra da dosyayı siliyorum, ayrıca dosyanın mime type’ının image/jpeg olduğunu kontrol ediyorum.
Açıkçası güvenlik endişesi taşıyorum. Sizce güvenlik için yapabileceğim başka birşeyler var mı? Gelen resim e-posta içerisinde gösteriliyor, eğer uzantısı değiştirilmiş (bir zip dosyasının uzantısını .jpg yaptım) bir dosyayı yolladığımda hotmail resmi göstermiyor.
Başka yapabileceğim bir şey var mı?
@Yakup GÖVLER
Upload sırasında gerçekleşen işlemlere bakalım:
1. dosya uzantısı kontrol ediliyor
2. içerik türünü kontrol ediliyor (bunu siz yaptığınızı söylediniz)
3. sınıf içerisinde getimagesize() ile dosyanın resim dosyası olup olmadığına bakılıyor
şimdi bu 3 koşulu aynı anda kontrol ettiğimiz için güvenlik konusunda şüphelenmenize gerek yok diye düşünüyorum. Çünkü bu koşullardan birisi atlatılsa bile mutlaka diğerine yakalanılacaktır. içerik türünü değiştirseniz getimagesize() fonksiyonu false verecek, resim dosyası içerisine kod enjekte etseniz bu sefer kodun çalışması için uzantısının php olması gerekecek, falan filan…
Yine de GD kütüphanesini kullanma şansınız varsa, bir de onunla imaj geçerliliğini daha sağlam bir şekilde test edebilirsiniz. Ama dediğim gibi üstteki 3 koşulu birlikte kontrol ettirdiğimizde buna bile gerek kalmaz. Bunların dışında aklıma şimdilik ek bir yöntem gelmiyor.
eklentiden sonradan haberim oldu
inceliyorum. teşekkürler
imaj kontrol fonksiyonu bypass edilebilinir dosyanın en üst satırına GIF9a; eklenerek getimagesize fonksiyonu bypass edilebilinir zaten veri postlarken dosya type’yide fake olarak gönderebiliyoruz.imaj kontrollerin’de en kesin çözüm imajı alıp yeniden oluşturmaktır böylelikle güvenlik sağlanmış olur kendi yazmış olduğum resim manipulasyon classından bir alıntı yapayım.
public function al($gel)
{
$z = @file_get_contents($gel) or ($this->hata .=
“Resim Yüklenemedi Belirtilen Resim Dosyası Yok\n”);
$this->kaynak = @imagecreatefromstring($z) or ($this->hata .=
“Belirttiğiniz Dosya Resim Değil\n”);
$this->en = @imagesx($this->kaynak);
$this->boy = @imagesy($this->kaynak);
}
imagecreatefromstring ile alınan veri eğer resim değilse işlem durdurulmalıdır.
Yüklediğim dosyaya ait bilgileri veritabanıma kaydetmek istiyorum.Dosyaya ilişkin bilgileri kemiksiz bir şekilde alamadım bunu nasıl yapabilirim? Umarım anlatabilmişimdir.
Su class’in turkcelestirilmisi : http://www.verot.net/php_class_upload.htm
ben kodlarda farkli hicbirsey goremedim
Evet çok benziyorlar(!). Hatta ikisi de PHP ile yazılmış değil mi?
@Osman UNGUR,
Bahsettiğin class kesinlikle daha iyi bir class fakat, Erhan arkadaşın yazdığı class la hiçbir alakası yok, emeğe saygı duyalım lütfen..
Burhan bir sorum olacaktı.
Bu yükledigim dosyaları veritabanını yazdırmamız için hangi degişkeni kullanabiliriz?
Öncelikle paylaşım için teşekkür ederim çok başarılı bir class dosya adını sql e kaydetmek için ne yapmam gerekiyor acaba ?
öncelikle değerli paylaşım için teşekkürler. evet Emre arkadaşımızın sorusunu yinelemek istedim dosya adını sql e kaydetmek için ne yapmam gerekiyor acaba ?
Teşekkürler
$bilgi = $up->bilgiVer();ile yüklenen dosyaların bilgilerini alabilirsiniz. Diyelimki yüklenen “ilk” dosyanın ismini mi alacaksınız?
$ilk_dosya_ismi = $bilgi[0]['yeniAd'];şeklinde bir kod kullanmanız yeterlidir. Daha fazla bilgi için
echo '<pre>';
print_r( $up->bilgiVer() );
echo '</pre>';
kodlarını dosya yükleme işleminden sonra çalıştırabilirsiniz. Bu da yetmezse lütfen dökümana bakınız.
xxx.mp3 dosyasının MIME tipine izin verilmiyor.
Tanımlamalarda
$up->tipKabul(‘txt, jpg, flv, mp3, wma’);
olmasına rağmen böyle bir hata alıyorum bunu nasıl çözebiliriz.
mp3 wma gibi ses dosyalarında oluyor.
Saygılarımla..
versiyon 1.6′da “mp3″ dosyaları için mime type tanımlaması şöyledir:
'mp3' => array('audio/mpeg', 'audio/mpg'),Eğer yüklemek istediğiniz mp3 dosyası, ‘audio/mpeg’ ve ‘audio/mpg’ dışında bir içerik türüne sahipse hata almanız normal. En güvenli yol, yüklemek istediğiniz mp3 dosyasının içerik türünü öğrenip “eb.upload.php” dosyasının içerisine eklemek olmalı.
http://www.webmaster-toolkit.com/mime-types.shtml adresinden mp3 dosyaları için “geçerli” mime type tanımlamalarını öğrenebilirsiniz. Diyelimki “audio/x-mpeg-3″ tanımlamasını ekleyeceksiniz. O halde “eb.upload.php” dosyasını açıp
'mp3' => array('audio/mpeg', 'audio/mpg'),satırını aşağıdaki gibi değiştirmeniz lâzım.
'mp3' => array('audio/mpeg', 'audio/mpg', 'audio/x-mpeg-3'),kusura bakmayın tekrar sormak durumunda kalıyorum
Ben zaten o satıra eklemeler yaptım bundan olabileceğini düşünerek
‘mp3′ => array(‘audio/mp3′, ‘audio/x-mp3′, ‘audio/mpeg’, ‘audio/x-mpeg’, ‘audio/mpg’, ‘audio/mpeg3′, ‘audio/x-mpeg-3′, ‘video/mpeg’, ‘video/x-mpeg’),
Satırın şu anki hali böyle olmasına rağmen çeşitli mp3 dosyaları denememe rağmen hala aynı hatayı alıyorum.
Bir de içerik türü demişsiniz pek bilgim yok bunu nasıl öğrenebilirim? Yüklemeye çalıştıklarım üstte yazan mime tiplerine uygun olmaması şaşırttı beni. şimdiden teşekkür ederim
Analyze It! isimli bir program var. o yardımcı olur sanırım.
Erhan bey ilginiz için teşekkürler programı indirip yüklemek istediğim mp3 leri test ettim program tanıdı hatta mime type larıda verdi.
verdiği typler eb.upload.php de tanımlı oldugu halde yükleme gerçekleşmiyor.Localde ve webdede denememe ragmen sonuç alamadım.
Sizin test edip gerçekleştirmemiz gereken eylemleri yazmanız mutlu eder gerçekten.
Saygılarımla.
üstadım mp3 kısmına ‘application/octetstream’, ekledim şimdi yükleme yapıyor bu tam olarak nedir site için sakıncası olurmu açık oluşturur mu acaba?
Merhabalar upload scripti araken sizin yazmış olduğunuz scripte ulaştım çok güzel olmuş ve kullanışlı olmuş çok teşekkürler.
Ancak ben bişey sormak istiyorum bu class içine aynı anda thumb yaptırılabilinir mi? Açıkcası şu anda gönderilen dosyalar upload klasörü içinde gönderildiği gibi, thumb klasörüne thumb dosyalarını da göndermek çok güzel olurdu.
Aslında bu bir istek bunu yapabilirseniz hem çok işlevsel hem de benim gibi birçok kişiye de çok yardımcı olabileceğini düşünüyorum.
şimdiden teşekkürler. Kolay gelsin.
Thumb (küçük resim) oluşturma konusunda çok istek geldi. Yeni sürümde bu özelliği ekleyeceğim, tamam.
Gerçekten güzel bir sınıf öncelikle bu paylaşımınız için teşekkür etmek isterim. Benim sorum sadece jpeg türüne izin verilmesine rağmen bir .png uzantılı resimin uzantısını .jpg yaptığımız da upload işleminin gerçekleşmesini nasıl önleyebiliriz? Belki ciddi bir güvenlik sorunu değil ama bazen png uzantılı resimlerin boyutları oldukça yüksek olabiliyor. Haklı olarak diyeceksiniz ki maxBoyut fonksiyonu ile sınırlayın. Evet bu da yeterli olacaktır fakat tip izin fonksiyonuyla halledilmesi mümkün mü? Biraz uzun oldu galiba
merakla cevabınızı bekliyorum.
Hocam ilginiz için teşekkürler ancak yüklediğimiz dosyayı sql e nasıl yazdırabiliriz Bu konuda bir örnekle yardımcı olursanız makbule geçecektir gerçekten.
@sinan yılmaz
Sql’e yazdırmakla neden bahsediyorsunuz? Yüklenen dosyayla ilgili bilgileri mi yoksa dosyanın içeriğini mi veritabanına yazdıracaksın.
@emre
Güzel bir soru sormuşsun. Biraz önce “png” uzantılı bir dosyanın uzantısını “jpg” olarak değiştirdim. Ama yine de upload edilmesini engelleyemedim. bunu araştıracağım.
çok güzel bir class hazırlamışsınız. web sitem için yaptığım resim galerisi modülünde kullanıyorum çokta memmunum ama thumb oluşturabilseydi harika olacaktı. çünkü resim galerimizdeki resimlerin boyutları bazen büyük olabiliyor. inşallah yeni sürümde bunu da düşünürsünüz.
Merhabalar upload edilen resimlerin url’lerini veritabanına bilgi gönderen inputbox yada texarea içine eklemek ve sonra mysql’e göndermek istiyorum.
Bunu nasıl yaparım ?
Teşekkürler…
@Erhan
Sql’e yazdırmakla neden bahsediyorsunuz? Yüklenen dosyayla ilgili bilgileri mi yoksa dosyanın içeriğini mi veritabanına yazdıracaksın.
Sadece yüklenen dosyanın yol bilgisini yazdırmak istiyorum hocam. Ahmet arkadaşımız da belirtmiş zaten.
yani bir scriptin içine entegre etmeye çalışıyorum fonksiyondan mysql tablosu (longtext) içine dosya yolu ve adı bilgisini yollamak istiyorum hocam.
Teşekkürler..
@Sinan
$up->bilgiVer() metodunu kullanabilirsiniz. Dökümanda gerekli bilgiler mevcut.
@YuqseLx 8 Aralık 2007 23:29
peki bu upload’dan sonra linki falan nasıl göstercez onları da yazsaydın keşke.
uploadtan sonra Yüklenen resmin link’ini bir değişkene atamak için ben şu döngüyü kullandım
foreach($up->bilgiVer() as $bilgi){
$resim_url=$bilgi['adres']; }
Bu arada Sevgili dostum Erhan’a tekrar teşekkürler
@Mustafa bunun cevabı verilmişti buyur;
foreach( $up->bilgiVer() as $bilgi )
{
echo “Eski ad: “.$bilgi['eskiAd'].”\r\n”;
echo “Yeni ad: “.$bilgi['yeniAd'].”\r\n”;
echo “Boyut: “.$bilgi['boyut'].”\r\n”;
echo “Adres: “.$bilgi['adres'].”\r\n”;
echo ”;
}
Evet bunu gördüm , sağol ben Link deyince direk
kullanılabilecek şekilde adres göstermeyi kastettim.
yani resim /upload/resim.jpg şeklinde yüklendiyse.
bunu “http://www.siteadi.com/$dosya/upload/resim.jpg” şeklinde kullanmak için sadece adres bilgisini çekmek yeterli . gerisi php’ e kalmış .
peki şunu nasıl yapabiliriz acaba
10 tane resim yüklüycem mesela formu şu şekilde oluşturdum
resim1 :
resim2 :
resim3 :
resim4 :
direk olarak resimi 4 ten ekledim veritabanımada direk resim4 eklenmesini istedim şimdi ben bi deneme yaptım yorumlardan edindiğim bilgiye göre ama nedense olmadı veritabanına ekleme yapınca direk resim1 e ekledi bunu nasıl yapabiliriz bi fikir verebilirmisiniz acaba?
Merhabalar,
Dosyanın isminin başına ek koyma işi nasıl oluyor? Bir türlü beceremedim.Beceriksizliğimden heralde
@ahmet
yukarıdaki yorumumda dosya isminin nasıl alınacağını yazdım. o yoruma bakarak dosya ismini alabilirsini ve başına herhangi bir ifade ekleyebilirsin.
@Erhan
Hata Yapmadığım Kanısındayım Ama Bir Türlü rar Uzantlı Dosyaları Tanıtamadım Hatta Denemediğim mime-type kalmadı nedir bunun sebei bir türlü kullanamıyorum
Çok başarılı olmuş, şu dosya upload olayı hep bir şekilde sorun yaratıyordu sayenizde bu sorunuda aştım.
Teşekkürler.
Merhaba,
sistemimde kullanmaya basladım gerçekten başarılı bi class, bişey soracağım, mesela ödev sitem var, ödev eklerken upload yaptıracagım bide ekran görüntüsü ekliyorum, yani 2 upload alanı var. bunları $ejder[0], $ejder[1], olarak ekliyorum, birde url den ekliyorum ödevleri aradan tam link upload etmeden, bu sefer 1. kutucuk boş kalıyor (program upload) resim upload ediyorum, bu sefer değişken $ejder[0] oluyor onuda program download kısmına eklemiştim db de kısaca resim $ejder0 değişkenine gitmemesini nasıl sağlarım, yani şöle yaptım dosyalar[] yerine dosyalar[kutu1] dosyalar[kutu2] yaptım onada göre aldım gene olmuyor nasıl yapabilirim ?
Teşekkürler
yüklenen resimlerin üzerine nasıl yazı yazdırılabilir ?
Teşekkürler arkadaşım çok güzel bir upload scripti yazmışşın eline sağlık …
Selamlar hocam ellerinize sağlık ancak indirme bağlantısında bir sorun var sanırım…
@Mustafa
Yazının sonundaki bağlantıya tıkladığında eBurhan Araçları sayfası açılıyor ki bu normal birşey. Açılan o sayfadan upload class’ı indirebilirsin.
print_r ( $up->bilgiVer() );
hocam bilgiver() kısmını keşke biraz daha esnek kodlasaydın mesela yüklenen dosyaların sadece adreslerini nasıl alabiliriz? linkleri alıp veri tabanına ekleyelim ordan alıp başka yerlerde kullanalım vs.
bilgiver()’in çıktısı olarak tam url’yi nasl alabiliriz kod yapısını bozmadan ?
@snnyk
Dökümanda ve yukarıdaki birçok yorumda (#1, #2, #3, #4, #5) upload edilen dosyaların linklerini nasıl alabileceğinizi anlattım.
Lütfen önce okuyalım, araştıralım daha sonra soru soralım.
Firefox pdf dosyalarını yüklemiyor. “xxx.pdf dosyasının MIME tipine izin verilmiyor. ” hatası alıyorum. Halbuki aynı dosya internet Explorer’da sorunsuz yükleniyor. Bu sorunun çözümü var mı acaba?
Sorunun nihayet çözebildim
Aynı sorunu yaşayanlar olursa mime type kodlarında pdf satırını
‘pdf’ => array(‘application/pdf’, ‘application/x-pdf’, ‘text/html’),
şelinde düzenlesinler…
bunu 10 mb dosyaları ükleyecek şekle getiremedim bir türlü ayrıca resim değil dosya .doc .ppt rar zip gibi dosyaları yüklemek istiyorum. bu konuda yardımcı olabilir misiniz?
Selamlar,
bilgiVer() metoduna hazir getImageSize()’i calistirmisken, yüklenen dosyanin genislik ve yükseklik degerlerini de ekleseniz nasil olur?
Sevgiler,
.flv dosyasının mıme türünü bilen varsa lütfen yazabilirmi..
Ayrıca emegine saglık Burhan, başarılı bir çalışma olmuş.
Geliştirmen dilegiyle.
@Mustafa Yigit bey
php.ini dosyanızı açın
; Maximum allowed size for uploaded files.
; http://php.net/upload-max-filesize
upload_max_filesize = 2M
memory_limit = 128M
upload_max_filesize = 20M
bu üç değişkenin rakamını degiştirin.
Bazı Mime Typeleri
.rar sıkıştırma dosyaları için
‘rar’ => ‘application/x-rar-compressed’,
.flv .divx .mkv video dosyaları için
‘flv’ => ‘video/x-flv’,
‘divx’ => ‘video/divx’,
‘mkv’ => ‘video/divx’,
Öncelikle Bu Güzel Paylaşımınız İçin Teşekkür Ederim Fakat,
Ne Yaptıysam PNG, Gif Dosyalarını Upload Ettiremedim.
Sadece jpg upload ediyor.
Mesajlarında Coğunu Okumama Rağmen Cevabı Çıkartamadım Yardım Ederseniz Sevinirim.
Not: Mime Tiplerinde png, gif vs tanımlı olmasına rağmen neden olabilir.
ilginiz için teşekkürler
Bende Bu Çalışmanız İçin Teşekkür Ederim.Şöyle Küçük Bir Sıkıntım Var:
Upload Sistemi Localhost’da Çalışıyor Yanlız Hostinge Attığımda ‘yükle’ Butonuna Bastıktan Sonra Sayfaya Bilgi Gelmiyor Upload Yapılacak Klasöre Baktığımda da İşlemin Gerçekleşmediğini Görüyorum.
Resimlerin Yükleneceği Klasörün CHMOD Ayarını Yaptım.(777)
Ne Yapmalıyım?Yardımcı Olursanız Sevinirim.
Teşekkür Ederim, Ama Sorunu Anladım.
Upload Klasörüm 2 Üst Dizinde ve Ben Sadece Upload Klasörüme CHMOD İzinlerini Vermişim.Eğer Upload Klasörü Üst Dizinlerde İse Arada Kalan Dizinlerede Aynı İzinleri Vermek Gerekir Bilmeyenlerin Bilgisine
hocam gerçekten çok teşekkür ederim
sanırım 1 yılı aşkın süredir kendi sitemde kullanıyorum ve mutluyum teşekkürler
Merhaba, sınıf gayet kullanışlı. Yüklediğim dosya bilgilerini veritabanına yazdırabiliyorum fakat dosyanın mime tipi yerine “uzantısını” yazdırmak istiyorum. Bilgileri aşağıdaki kod ile veritabanına kaydediyorum. $bilgi['icerik'] dosya uzantısını vermiyormuş. Uzantıyı nasıl alabilirim acaba?
foreach( $up->bilgiVer() as $bilgi )
{
$yeni_ad = $bilgi['yeniAd'];
$eski_ad = $bilgi['eskiAd'];
$boyut = $bilgi['boyut'];
$uzanti = $bilgi['icerik'];
$yol = $bilgi['adres'];
$baglanti = mysql_connect (“localhost”,”root”,”123456″);
mysql_select_db(“veritabani”,$baglanti);
if ($baglanti)
{
// echo “Veritabani Baglantisi Basarili”;
}
else
{
echo “Veritabani Baglantisi Basarisiz”;
}
$dosya_bilgisi_sql = “INSERT INTO files (old_name, new_name, ext, size, path, date) VALUES (‘$eski_ad’, ‘$yeni_ad’, ‘$uzanti’, ‘$boyut’, ‘$yol’, now())”;
mysql_query($insert_file);
}
emeğinize sağlık, güzel bir upload yöntemi. forumumla uyarlamaya çalışacağım. teşekkürler..
Bu Çalışmanız İçin Teşekkür Ederim. Thumb küçük resim için bi güncelleme yaptınızmı? Yaparsanız çok harika olur.