2013-06-04 2 views
0

У меня есть следующий C# код:Ошибка при попытке загрузки файла ASPX/C#

string File = "../images/main/profile-icon.png"; 
if (Request.ContentLength != 0) 
{ 
    int Size = Request.Files[0].ContentLength/1024; 
    if (Size <= 512) 
    { 

     string LocalFile = Request.Files[0].FileName; 
     int dot = LocalFile.LastIndexOf('.'); 
     string FileType = LocalFile.Substring(dot + 1); 
     if (FileType == "gif" || FileType == "jpg" || FileType == "png" || FileType == "GIF" || FileType == "JPG" || FileType == "PNG") 
     { 
      int LastIndex = LocalFile.LastIndexOf(@"\") + 1; 
      File = LocalFile.Substring(LastIndex, LocalFile.Length - LastIndex); 
      File = DateTime.Today.ToString(); 
      string Path = Server.MapPath(" ../images/profiles") + "..\\" + File; 
      Request.Files[0].SaveAs(Path); 
     } 
    } 
    else 
    { 
     Response.Write("The file is too big !"); 
    } 
} 
else 
{ 
    Response.Write("Unknown Error !"); 
} 

Проблема заключается в том, что в третьей строке кода я получаю следующее сообщение об ошибке:

Index was out of range. Must be non-negative and less than the size of the collection.

это источник формы HTML:

<form name="Register" runat="server" style="margin-top: 15px;" onsubmit="return validateProfile('Register');"> 
    <p> 
     photo: 
     <input type="file" name="File" style="margin-right:10px;" /> 
    </p> 
</form> 

Мой вопрос, почему и как это можно исправить Тхи s?

Пожелайте о помощи, спасибо!

+1

На какой линии ..? –

+0

В этой строке «int Size = Request.Files [0] .ContentLength/1024;" –

+0

вы, кажется, тестируете Request.ContentLength! = 0, а затем получаете доступ к Request.Files [0] Я думаю, это проблема – jbl

ответ

6

Оказывается, что Files массив не имеет элементов, может быть, вы можете добавить проверку:

if(Request.Files.Count > 0) 
{ 
    // continue here ... 
} 

Это, вероятно, означает, что вы не загрузить файл правильно и он отсутствует в запросе.

EDIT: Попробуйте установить enctype="multipart/form-data" в ваш тег формы. Таким образом, это станет чем-то вроде:

<form name="Register" runat="server" style="margin-top: 15px;" onsubmit="return validateProfile('Register');" enctype="multipart/form-data"> 
+0

Привет, спасибо за ответ, но теперь он не «вводит» в условие, хотя есть файл в форме, почему? –

+0

Это значит, что вы не загружаете его правильно. Может быть, вы можете показать нам свою разметку. –

+0

Я обновил вопрос, молюсь рассмотреть его –

Смежные вопросы