2013-12-06 4 views
1

У меня есть сайт, на котором мои пользователи могут загружать файлы в свой профиль, но я не хочу, чтобы файлы загружались по прямой ссылке, поэтому я использую ashx.Загрузить файл с помощью ashx in aspx вызывает ошибку тайм-аута

Загрузите файл в App_data, используя ashx. Вот мой код:

int CountFile = 0; 
string filename = ""; 

string path = Server.MapPath("~") + "App_Data"; 
String[] validext = { ".pdf" ,".doc",".zip"};     
string ext = System.IO.Path.GetExtension(FileUpload1.PostedFile.FileName); 

//int test = Array.IndexOf(validext, ext.ToLower()); 
if (Array.IndexOf(validext, ext.ToLower()) < 0) 
{    
    LblMessage.ForeColor = System.Drawing.Color.Red; 
    LblMessage.Text = "پسوند فایل معتبر نیست"; 
    return; 
} 

ClsSendEmail objSendEmail=new ClsSendEmail(); 
string[] Infotmp=new string[12]; 
string res = ObjRegUser.UploadArticle(Session["UserSession"].ToString(), txtArticleSubject.Text, Value[DDLSubjectGroup.SelectedIndex].ToString()); 

if (res!="-1") 
{ 
    FileUpload1.PostedFile.SaveAs(path + "\\" + res+ext); 
    ObjRegUser.UpdateArticleLocation(int.Parse(res),res+ext); 
    string Url = "~/Users/Default.aspx?Message=" + "فایل با موفقیت ارسال شد" + "&" + "State=True"; 
    // Infotmp= ObjRegUser.SelectUserProfile(Session["UserSession"].ToString()); 
    //objSendEmail.SendEmail("تایید ارسال مقاله به همایش ملی سرب و روی ایران",objSendEmail.SuccessArticleUpload(Infotmp[1].ToString()+" "+Infotmp[2].ToString(),txtArticleSubject.Text),Infotmp[6]); 

    Response.Redirect(Url); 
} 
else if (res == "-1") 
{ 
    string Url = "~/Users/Default.aspx?Message=" + "تعداد فایل ارسالی بیشتر از حد مجاز می باشد " + "&" + "State=False"; 
    Response.Redirect(Url); 
}  

Но у меня есть большая проблема, когда мои пользователи хотят загружать свои файлы (размер файла большой, медленный интернет) соединение сбрасывается и тайм-аут.

Что мне делать?

+0

вы можете загрузить файл в виде кусков – SpiderCode

+0

Нельзя публиковать код загрузки файлов у пользователей, так как ошибка связана с загрузкой файлов пользователями! –

+0

как я могу это сделать? –

ответ

0

С готовым ASP.NET вы не сможете загрузить файл с огромным размером (гигабайт), так как IIS либо перейдет в режим ожидания, либо превысит ограничения по размеру (см. : maxRequestLength настройка для IIS).

У вас есть несколько вариантов:

  1. Пользовательский модуль HTTP

    NeatUpload является свободным выбором.

  2. Silverlight вариант/флэш

    SWFUpload является свободным выбором.

  3. Асинхронных отрывы опции

    RadAsyncUpload - Telerik's ASP.NET AsyncUpload является вариантом оплаты, посетите веб-сайт для ценообразования.

+0

максимальный размер файла 10 mb –

+0

@Spad - не стесняйтесь проголосовать за этот ответ. :-) –