• 30-12-2012, 14:54:57
    #1
    Merhaba;
    web sitemizin kullanıcıları için basit bir image hosting uygulaması hazırlıyorum.
    genel olarak script çalışıyor. izin verilen dosya boyutu ve formatları config dosyasında ve buna uygun dosyaları sorunsuzca yükleyip linkini ekrana alıyorum ancak izin verilenden büyük ya da format olarak uygun olmayan (exe, zip vs.) bir dosya yüklemeyi denediğim zaman hata mesajı için uzun bir süre beklemek gerekiyor zira formdaki dosya alanından post edilen dosyayı oncelikle gecici bir yere aldığından dosyayı kopyalaması ve kontrolü uygulaması şu an için büyük sorun teşkil ediyor.

    upload edilecek dosyanın boyut ve format kontrolünü en başta yapmak mümkün müdür?

    yardımcı olursanız çok memnun olurum.

    saygılar
    ------------------------------------------------------------
    config.php

    <?php
    $title = 'Image Hosting';
    $filedir = 'pics';
    $maxsize = 1024*1024; //in bytes, 1024*1024 is 1MB
    $accepted = array('png', 'jpg', 'jpeg', 'gif', 'bmp', 'swf', 'flv');
    ?>
    ------------------------------------------------------------
    code dosyası (başta config.php include ediliyor)

    <?php if(empty($imgurl)) { ?> style="display: none;"<?php } ?>> <img id="showimg" src="<?php if(!empty($imgurl)) print $imgurl; else { ?>about:blank<?php } ?>" alt="Dosya Yukleniyor..." /></div>
    <form enctype="multipart/form-data" action="<?php print preg_replace('/\/([^\/]+?)$/', '/', $_SERVER['PHP_SELF']) ?>" method="post">
    <label for="file" class="resec">Resim Seçiniz: </label>
    <input type="file" name="file" id="file" />
    <input name="submit" type="submit" value="Yukle" />
    (Maksimum Dosya Boyutu <?php print ((ini_get('upload_max_filesize')>$maxsize)?ini_get ('upload_max_filesize'):$maxsize)/1024; ?> KiB)
    <input type="hidden" name="MAX_FILE_SIZE" value="<?php print (ini_get('upload_max_filesize')>$maxsize)?ini_get( 'upload_max_filesize'):$maxsize; ?>" />
    <br />
    </form></td>

    </tr>
    <tr>
    <td><?php
    if($_SERVER['REQUEST_METHOD'] == 'POST') {
    preg_match('/\.([a-zA-Z]+?)$/', $_FILES['file']['name'], $matches);
    if(in_array(strtolower($matches[1]), $accepted)) {
    if($_FILES['file']['size'] <= $maxsize) {
    $newname = md5_file($_FILES['file']['tmp_name']).'.'.$matches[1];
    move_uploaded_file($_FILES['file']['tmp_name'], $filedir.'/'.$newname);
    $linkurl = 'http://'.$_SERVER['HTTP_HOST'].preg_replace('/\/([^\/]+?)$/', '/', $_SERVER['PHP_SELF']).'#'.$newname;
    $imgurl = 'http://'.$_SERVER['HTTP_HOST'].preg_replace('/\/([^\/]+?)$/', '/', $_SERVER['PHP_SELF']).$filedir.'/'.$newname;
    print '<h2>Dosya Yüklendi</h2> <p id="codes"><br />

    <label for="codedirect">Link:</label><br />
    <input type="text" id="codedirect" value="'.$imgurl.'" onclick="javascript:this.focus();this.select();" readonly="true" />

    </p>';
    } else
    print '<p>Dosya Boyutu Fazla Gibi...</p>';
    } else
    print '<p>Tanimlayamayan Dosya Modeli...</p>';
    }
    ?>
  • 30-12-2012, 15:16:16
    #2
    <input type="file" accept="image/gif, image/jpg, image/png" ... >
  • 30-12-2012, 17:41:17
    #3
    php server side çalışır dosya içeri gitmeden anlamaz ne olduğunu, ajax-javascript-java her hangi biriyle kontrol ettir önce hazır kodlar var araştır.