ajax kullanarak oluşturduğunuz asp.net projelerinde fileupload'ı direk kullanmaya kalkarsanız bir takım problemlerle karşılaşırsınız. Yukarıda görmüş olduğunuz FileUpload.aspx sayfam, bu sayfa içerisinde gördüğünüz üzere bir adet updatepanel var ve bu updatepanel içerisinde bir adet fileupload, bir adet button ve 3 adet label var. FileUpload.aspx.cs dosyasında aşağıdaki kodu yazacak olursanız.
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
public partial class FileUpload : System.Web.UI.Page
{
static string logo_url = "";protected void Page_Load(object sender, EventArgs e)
{
}
protected void btnUpload_Click(object sender, EventArgs e)
{
if (FileUpload1.HasFile)
{
try
{
//FileUpload1.SaveAs(FileUpload1.FileName);
if (FileUpload1.FileName.Length < 50)
{
FileUpload1.SaveAs(MapPath("~/" + "firma/" + "logolar" + "/" + FileUpload1.FileName));
logo_url = (FileUpload1.FileName);
lblUpload.Text = "File name: " +
FileUpload1.PostedFile.FileName + "<br>" +FileUpload1.PostedFile.ContentLength +
" kb<br>" +"Dosya Tipi: " +
FileUpload1.PostedFile.ContentType;
lblUploadCompleted.Text = "irket logosu baŸaryla yklendi.";lblW16.Text =
"";
}
else
{
lblW16.Text = "Logonun ismi ‡ok uzun! Logonun isminin uzunlu§u 50 harfi ge‡memeli.";
}
}
catch (Exception ex)
{
lblW16.Text = "ERROR: " + ex.Message.ToString();
lblUpload.Text = "";lblUploadCompleted.Text =
"";
}
}
else
{
lblW16.Text = "Bir dosya se‡mediniz.";
lblUpload.Text = "";lblUploadCompleted.Text =
"";
}
}
}
FileUpload.aspx dosyanızı çalıştırıp ara tuşuna basarak bir dosya seçip yükle butonuna bastığınızda "Bir dosya seçmediniz." Hatasıyla karşılacaksınız, çünkü hiç bir zaman FileUpload1.HasFile değeri "true" olmayacak. Bunun nedeni Yükle butonumuzun Postback olmamasıdır.
Sorunun çözümü oldukça basit: UpdatePanel Trigger Collection'ına Yükle butonunu PostBackTrigger olarak ekleyin. Artık paşalar gibi fileupload'ı kullanabileceksiniz. :)