Элемент управления FileUpload, приводящий к пустому файлу - PullRequest
4 голосов
/ 13 ноября 2009

У меня возникли проблемы с использованием элемента управления FileUpload в asp.NET. По какой-то причине, когда я пытаюсь загрузить файл, файл отображается как пустой. Я могу сохранить файл без каких-либо проблем - и когда я проверяю содержимое POST, отправляемое на страницу, данные публикуются (я использовал firebug, чтобы посмотреть заголовки, чтобы увидеть, происходит ли что-то безумное), но control просто сохраняет пустой файл и заявляет, что в приведенном ниже коде размер файла равен -2.

Кто-нибудь знает, что здесь может происходить?

try
{
    UploadFile.PostedFile.SaveAs(filename);
}
catch (Exception ex)
{
    lblStatus.Text = "NOT OK - COULDN'T SAVE:" + filename + " " + ex.ToString();
    throw;
}
lblStatus.Text = "File Size: " + UploadFile.PostedFile.ContentLength.ToString();

Обратите внимание, что UploadFile.HasFile по какой-то причине возвращает false, и я получаю те же результаты, независимо от того, пытаюсь ли я загрузить UploadFile.SaveAs (имя файла) или UploadFile.PostedFile.SaveAs (имя файла).

Буду признателен за любую помощь, которая может быть оказана.

Ответы [ 3 ]

5 голосов
/ 13 ноября 2009

Если вы помещаете свой UploadControl в UpdatePanel (Ajax), он не будет работать по умолчанию.

Вы должны вызвать полный постбэк на кнопку «Отправить», например:

<form id="form1" runat="server">
  <asp:ScriptManager ID="ScriptManager1" runat="server"/>
  <asp:UpdatePanel ID="UpdatePanel1" runat="server">
  <Triggers>
    <asp:PostBackTrigger ControlID="UploadFile" /> 
  </Triggers>
  <ContentTemplate>
    <asp:FileUpload ID="FileUpload1" runat="server" />
    <asp:Button ID="UploadFile" runat="server" Text="Upload" OnClick="UploadFile" /> 
  </ContentTemplate>
  </asp:UpdatePanel>
</form>
1 голос
/ 18 января 2010

Вы все еще сталкиваетесь с проблемой? Я только что столкнулся с той же проблемой, и в моем случае ошибка была вызвана использованием и закрытием потока элемента управления FileUpload (либо Filecontrol.FileContent или FileControl.PostedFile.InputStream), поэтому я получил загруженный файл с размером 0. Удаление этой части кода решило проблему для меня.

Л.

0 голосов
/ 13 ноября 2009

Убедитесь, что элемент на вашей странице имеет этот атрибут / значение

enctype="MULTIPART/FORM-DATA"
...