Javascript ile FileUpload nesnesinden dosya adını alma

Bazen boş geçilmemesi alanlardan birisi fileupload nesnesi olabiliyor. Bunun için tabiki jquery’nin dosya kontrol js’leri mevcut fakat 1-2 satırla file upload nesnesinden seçilen dosyanın adını almamız mümkün.

function get_filename(obj,hidden)
{
    var file = obj.value;
    alert(file);
}

<asp:FileUpload ID="FileUdosya" maxlength="12" onchange="get_filename(this);" />

Dosya isminin boş olup olmadığının kontolünü yapıp bir hidden inputa veri gönderebiliriz.

MVC FileUpload ile dosya yükleme

MVC de dosya yüklemek için öncelikle View’a dosya yükleme html kodunu ekliyoruz.

<input type="file" id="Resim" name="Resim" size="23"/>

Aşağıdaki Controller kodu ile birden fazla dosya ekleyebiliyoruz.

[HttpPost]
public ActionResult Create(Modelimiz modelimiz, HttpPostedFileBase file)
{
    if (ModelState.IsValid)
    {
        foreach (string name in Request.Files)
        {
         file = Request.Files[name];
         file.SaveAs(Server.MapPath("~/resimler/" + file.FileName));
        }
        return RedirectToAction("Index");
    }
    return View(modelimiz);
}

ASP.NET Timeout Süreleri

Web uygulamalarında bazı durumlarda sunucuya yapılan request süreleri çok fazla olabilir veya kullanıcıların sitede uzun süre beklemeleri gerekebilir. Bazen arka tarafta uzun bir işlem süregelmesinden bazen de büyük dosyaların upload yapılmasından ötürü sayfalarda timeout hatası ile karşılaşabiliriz.
Bu gibi durumlarda konfigürasyon dosyasında hangi değişiklikleri yapabileceğimizi aşağıda ayrı ayrı inceleyelim;

Execution Timeout
ASP.NET taleplerinin maksimum süresidir. Bu süre tamamlandığı vakit request, üzerinde herhangi bir hata oluşsun veya oluşmasın IIS tarafından anında iptal edilir. Web.config üzerinde debug değeri true atandığında ise IIS talebi iptal etmez.
Saniye cinsinden değer almaktadır. Default değeri 110 saniyedir.

<configuration>
    <system.web>
	<httpruntime executiontimeout="110"></httpruntime>
    </system.web>
</configuration>

Session Timeout
Kullanıcıların uygulamada bulundukları sürede bekleme durumlarında veri kaybını önlemek için Session süresini uzatabilirsiniz.
Dakika cinsinden değer almaktadır. Default değeri 20 dakikadır.

<configuration>
    <system.web>
        <sessionstate timeout="20"></sessionstate>
    </system.web>
</configuration>

Authentication Timeout
Uygulamaya forms authentication ile login olmuş kullanıcının tekrar login olmasını sağlayabilmek ve cookie süresini belirlemek için kullanılır.
Dakika cinsinden değer almaktadır. Default değeri 30 dakikadır.

Ayrıca slidingExpiration değerine true atandığı vakit her yeni talepte timeout süresi sıfırlanır yani kullanıcı 10. dakikada request gönderdiğinde timeout süresi 20 dakikadan sıfırlanıp tekrar 30 dakikaya çekilir. Bu özellik default true gelmektedir.

<configuration>
<system.web>
<authentication mode="Forms">
<forms timeout="30" slidingexpiration="true"></forms>
</authentication>
</system.web>
</configuration>

AJAX Request Timeout
Sunucu tarafında request süresi ne olursa olsun Microsoft AJAX kütüphanesi ile gönderilmiş asenkron requestlerin kendine özel bir timeout süresi vardır. Bu süre aşıldığı vakit javascript ile kullanıcı uyarılır ve sunucuyu dinleme kesilir.
Saniye cinsinden olup default değeri 90 saniyedir. Bu değer web.config üzerinden değil ilgili ScriptManager üzerinden ezilebilir.

<asp:scriptmanager runat="server" asyncpostbacktimeout="90"></asp:scriptmanager>

IIS Connection Timeout
Son olarak ta IIS tarafındaki bağlantılar için bir timeout değeri bulunmaktadır. Bu değer ise süresi dolmuş veya kapatılması gerekirken kapatılmamış bağlantıların sunucuda maksimum yaşam süresidir. Dolayısıyla çalışan bağlantılar için değil askıdaki bağlantıları etkileyen bir değerdir.

Connection Timeout