PHP ile resim yükleme

0 Cevap php

Kimsenin kaydolmak ve ben yeniden boyutlandırmak bir poster ile birlikte kendi yerel olayın ayrıntıları ekleyebilirsiniz ay geçmiş çift için PHP ve MySQL bir olay promosyon site inşa ettik.

Haliyle, ben yerel ve barındırma hizmeti cezası çalışan tüm süreci var, ama site canlı gitmeden önce ben bunu yapıyorum yolda birkaç soru var.

Bu benim görüntü yüklenenler işlemek için kullanıyorum fonksiyon kodu. Ben bu bölümde daha önce dosya boyutu kontrol edin.

$extension = substr($filename, strpos($filename,'.'), strlen($filename)-1); 
$filetypes = array('.jpg', '.jpeg', '.gif', '.bmp', '.png', '.JPG', '.PNG', '.JPEG', '.GIF', '.BMP');
if($_FILES['image']['error'] == 4){
  $error = "No image";
  return $error; 
}
else if(($_FILES['image']['error'] == 2) || ($_FILES['image']['error'] == 1)){
  $error = "File size too big";
  return $error;
}
else if(!in_array($extension, $filetypes)){
  $error = "This isn't an image that is supported";
  return $error;
}
else if(($_FILES['image']['error'] == 7) || ($_FILES['image']['error'] == 3)){
  $error = "Error occurred. Try again";
  return $error;
}
else{
  if(($extension == '.jpg') || ($extension == '.jpeg')){
    $source = imagecreatefromjpeg($uploaded);
  }
  else if($extension == '.png'){
    $source = imagecreatefrompng($uploaded);
  }
  else{
    $source = imagecreatefromgif($uploaded);
  }
  list($width, $height) = getimagesize($uploaded);
  $ratio = $width / $height;
  $new_width = 300;
  $new_height = round(300 / $ratio); 
  $canvas = imagecreatetruecolor($new_width, $new_height);
  imagecopyresampled($canvas, $source, 0, 0, 0, 0, $new_width, $new_height, $width,       $height);
  $name = date("dmyHis").rand(0, 9);
  $path = $_SERVER[ 'DOCUMENT_ROOT' ] . '/images/uploaded/'.$name.'.jpg';
  $new_image = imagejpeg($canvas, $path,  100);
  $poster['name'] = $name.'.jpg';
  $poster['width'] = $new_width;
  $poster['height'] = $new_height;
  return $name.'.jpg';
}

Haliyle, ben biliyorum hataların bir çift vardır, ya da tam olarak böyle imagecreatefromwhatever bir hata atma bazı görüntüler gibi, içine bakmadım, ve görüntü adı varsa '.' içinde, aynı zamanda bir hata atmak olacak.

Işlemi yapıldıktan sonra, ben izlenen klasörden doğru görüntüyü elde etmek için kullanılacak olan, MySQL bir 'afiş' alanında görüntü adını kaydetmek gerekir.

Ben görüntü yüklenenler ile yüz olasılığı var başka bir sorun varsa ne ben gerçekten bilmek istedim?

  • Ben trafik adil bir miktar bekliyorum, bu nedenle bu kod yoğun kullanımı ile iyi çalıştırmak için gidiyor?
  • Ben için dışarı bakarak olmalıdır başka tuzaklar veya şeyler var mı?
  • Ben iş için en iyi yöntemi kullanıyorum?
  • Şu anda benim dosya boyutu limiti 2MB olan, bu çok yüksek?
  • Bir kullanıcı 2MB fazla şey yükler bile, dosya vb sıyırma adı ve dosya boyutu karşılaştırma için sunucuya yüklenecektir komut dosyası çalışmaya devam edecek, ve ben varsayalım, nasıl bu benim bant genişliği kullanımını etkileyecek?
  • Ne kadar orijinal dosyalar sunucu üzerinde kalıyor?

Herkes bu konuda herhangi bir iyi okuma varsa ben çok takdir ediyorum!

Teşekkür ederim.

edit: Biçimlendirme.

2 Düzenlemek: Ben orijinal dosyalar hakkında kendimi açık vermedi. Ne demek ben erişmek için $ _FILES değişkeni kullanmak orijinal dosyaları. Görüntü sunucuda ben uzantıları ve bu uğraşmaktan ediyorum bütün zaman oturan 1.9MB 's değerinde olacak, bu 1.9MB olduğunu söyle? Ben yeni bir görüntü oluşturduktan sonra bunu temizlemek gerekir?

0 Cevap