首页 > 解决方案 > UpdatePanel 内的 ASP.NET C# FileUpload 和 Postback

问题描述

目前我正在尝试通过 FileUpload 上传图像并将其存储在数据库中。我的问题是,当我单击上传按钮时,我总是在尝试上传时收到 System.NullReferenceException。

现在我知道 UpdatePanel 中的 asp-FileUploads 存在问题 - 所以我将上传按钮设置为 PostBackTrigger,这会导致完整的回发 - 但它仍然无法正常工作。

这就是我到目前为止得到的:

<asp:UpdatePanel ID="Update_woundpic" runat="server" UpdateMode="Conditional">
            <Triggers>
                <asp:PostBackTrigger ControlID="woundpic_upload" />
            </Triggers>
            <ContentTemplate>
              <div class="col-md-3">
                  <h3 class="label2">Upload
                    <small class="text-muted">maximal 5MB</small>
                  </h3>
                  <asp:FileUpload ID="uploadWoundImage" runat="server" />
                  <br />
                  <asp:LinkButton ID="woundpic_upload" runat="server" OnClick="btn_Upload_Click" CssClass="btn3d btn btn-default btn-lg"><span aria-hidden="true" class="glyphicon glyphicon-upload"></span> Hochladen</asp:LinkButton>
                  <asp:Label ID="lbl_success" runat="server" Text="Upload erfolgreich!" CssClass="uploadSuccess" Visible="False"></asp:Label>
                  <asp:Label ID="lbl_error" runat="server" Text="Upload nicht erfolgreich!" CssClass="uploadFailure" Visible="False"></asp:Label>
                  <br />
                  <br />
            </div>
  </ContentTemplate>
</asp:UpdatePanel>

这是我上传图像/文件的方法:

 protected void btn_Upload_Click(object sender, EventArgs e)
        {

            byte[] imgByte;

                using(BinaryReader reader = new BinaryReader(uploadWoundImage.PostedFile.InputStream))
                {
                    imgByte = reader.ReadBytes(uploadWoundImage.PostedFile.ContentLength);
                }

            DateTime imageUpload = DateTime.Now;
            string imageFormat = uploadWoundImage.PostedFile.ContentType;
            string imageName = Path.GetFileName(uploadWoundImage.PostedFile.FileName);
            _db.SaveWoundImage(imgByte, imageFormat, imageName, imageUpload);

        }

现在,如果我点击按钮

using(BinaryReader reader = new BinaryReader(uploadWoundImage.PostedFile.InputStream))

抛出 System.NullReferenceException,所以我不知道为什么即使有完整的回发也找不到文件。

谢谢你的帮助!

标签: c#sqlasp.netdatabaseexception

解决方案


推荐阅读