Pages

7 Mayıs 2012 Pazartesi

PHP Dosya Yükleme | PHP File Upload

PHP ile dosya yükleme işlemini yaptığım çalışma. Açıklamaları içindedir.
Güzel yanı, kaç adet dosya yüklemek istiyorsanız bunu dosya yükleme esnasında seçebiliyorsunuz. 2 adet dosya yüklemek istiyorsunuz diyelim :  Alan Ekle butonuna basarak bir adet daha dosya yükleme alanı gelmiş oluyor. Ve dosya yüklemeyi karşılayan sayfamız da bunların sayısını otomatik olarak alıyor.
Birçok kimsenin işine yarayacağından eminim.
Eğer MAX_FILE_SIZE değerini 0 olarak verirseniz veya hiç belirtmez iseniz, dosya yükler iken kullanıcı tarafından herhangi bir boyut sınırlaması olmayacaktır.



<script>
// Mustafa SOLAK tarafından yazılmıştır.
// mustafasolak22@hotmail.com
// http://msolak.blogspot.com
// Herhangi bir sorunuz olursa bu adreslerden bana ulaşabilirsiniz.

function alanSil(){
var kacTane = document.getElementById('formMs').getElementsByTagName('p').length;
if (kacTane > 1){
var Node1 = document.getElementById("formMs");
Node1.removeChild(Node1.childNodes[(kacTane+1)]);
}//else alert("olmaz");
}

function alanekle(){
var kacTane = document.getElementById('formMs').getElementsByTagName('p').length;
var formum = document.getElementById('formMs');

var yeniParag = document.createElement('p'); // Yeni paragraf oluşturuluyor.
yeniParag.setAttribute('id',"p-" + kacTane);
document.getElementById('formMs').appendChild(yeniParag);

var yenimaxinput = document.createElement('input');
yenimaxinput.setAttribute('type',"hidden");
yenimaxinput.setAttribute('name',"MAX_FILE_SIZE");
yenimaxinput.setAttribute('value',"15000000");
yeniParag.appendChild(yenimaxinput);

var yeniLabel = document.createElement('label');
yeniLabel.innerHTML = "Dosya Seçiniz :";
yeniParag.appendChild(yeniLabel);

var yenidosyainput = document.createElement('input');
yenidosyainput.setAttribute('type',"file");
yenidosyainput.setAttribute('name',"dosya[]");
yeniParag.appendChild(yenidosyainput);

}

</script>

<form enctype="multipart/form-data" action="?" method="POST">
<div id="formMs">
<p id="p-0">
<input type="hidden" name="MAX_FILE_SIZE" value="15000000" /> <!-- 15 MB boyutunda -->
Dosya seçiniz : <input name="dosya[]" type="file" />
</p>
</div>

<input type="button" onclick="alanekle()" value="Alan Ekle" />
<input type="button" onclick="alanSil()" value="Sil" /><br><br>
<input type="submit" value="Dosyayı Yükle" />
</form>

<?php
$ilk_gelis = empty($_POST);

if (!$ilk_gelis){
print "<pre>";
//print_r($_FILES);
print "</pre>";

$yuklenecekAdres = "yuklenendosyalar/";
//$yuklenecekAdres .= basename($_FILES["dosya"]["name"]);

foreach($_FILES["dosya"]["error"] as $anahtar => $hata) {
if ($hata == UPLOAD_ERR_OK) {
$tmp_name = $_FILES["dosya"]["tmp_name"][$anahtar];
$name = $_FILES["dosya"]["name"][$anahtar];
move_uploaded_file($tmp_name, $yuklenecekAdres . "/" . $name);
echo "Seçtiğiniz dosya : " . basename( $_FILES['dosya']['name'][$anahtar]). " başarıyla yüklendi.<br>";
}
else print $error_message = @file_upload_error_message($_FILES['dosya']['error']);
}

function file_upload_error_message($error_code) {
switch ($error_code) {
case UPLOAD_ERR_INI_SIZE:
return 'php.ini dosyasında belirtilen upload_max_filesize değerini aştınız. Lütfen upload_max_filesize değerini kontrol edin.';
case UPLOAD_ERR_FORM_SIZE:
return 'Dosya yükleme formunda yer alan MAX_FILE_SIZE değerini aştınız.';
case UPLOAD_ERR_PARTIAL:
return 'Dosya kısmen yüklendi.';
case UPLOAD_ERR_NO_FILE:
return 'Yüklenecek dosya seçmediniz.';
case UPLOAD_ERR_NO_TMP_DIR:
return 'Geçici dizin yoktur. tmp';
case UPLOAD_ERR_CANT_WRITE:
return 'Dosya diske yazılırken hata oluştu.';
case UPLOAD_ERR_EXTENSION:
return 'Dosya yükleme bir PHP eklentisi nedeniyle durmuştur. ';
default:
return 'Bilinmeyen dosya yükleme hatası;';
}
}
}

?>

0 yorum:

Yorum Gönder

Konuyla ilgili düşüncenizi veya sorunuzu paylaşmak ister misiniz ?

(Eğer Google hesabınız yok ise aşağıda yer alan Yorumlama biçimi menüsünden Anonim seçeneğini seçebilirsiniz.)