首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >上传后显示在Asp.net中上传的文件

上传后显示在Asp.net中上传的文件
EN

Stack Overflow用户
提问于 2022-02-21 13:18:35
回答 1查看 492关注 0票数 0

我有一个Asp.net代码:

代码语言:javascript
复制
<asp:Panel ID="pnlCustomer" runat="server">
  <p class=".SmallCaption">
    <b>Edit report</b></p>
  <table class="DataTable" id="Bug" cellspacing="0" cellpadding="2" width="100%" border="0">

    <tr>
      <td class="CellName" width="25%">
        <asp:Label CssClass="CasualForm" id="lblUploadFile" runat="server">Save new file</asp:Label>
      </td>
      <td class="CellValue" width="25%">
        <asp:FileUpload CssClass="formdata100" ID="fuUploadedFile" runat="server" />
      </td>
      <td class="CellName" width="50%" colspan="2">&nbsp;</td>
    </tr>

    <tr>
      <td class="CellName" width="25%">
        <asp:Button ID="btnDelete" runat="server" Text="Delete" OnClick="BtnDeleteReport" style="float:left" OnClientClick="if(confirm('Do you really want to delete this report?')) {this.disabled = true;} else {return false;}" UseSubmitBehavior="false" />
      </td>
      <td class="CellName" width="25%">&nbsp;</td>
      <td class="CellName" width="47%">
        <asp:Button ID="btnDownloadFile" runat="server" Text="Get Report" onclick="btnDownloadFile_Click" />
      </td>

      <td class="CellName" width="3%">
        <asp:Button ID="btnSave" runat="server" Text="Edit" OnClientClick="if(checkFileUploadSize()) {return true;}" onclick="btnEdit_Click" CommandArgument="Edit" />
      </td>
    </tr>

  </table>
</asp:Panel>

这是反码C#:

代码语言:javascript
复制
protected void btnEdit_Click(object sender, EventArgs e) {
  Button btnThis = (Button) sender;
  if (btnThis.Text == "Edit") {
    Edit();
    btnThis.Text = "Save";
  } else if (btnThis.Text == "Save") {
    Save();
    //btnThis.Text = "Edit";
  }
}


private void Save() {
  ReadDataFromGUI();

  // insert/update report in DB.
  int _id = reportsHandler.Update(report);
  Response.Redirect("~/ReportsEditor.aspx?id=" + _id);
}


private void ReadDataFromGUI() {
  if (report == null)
    report = new Support_Report();
  report.id = report_id;
  report.id_entity = int.Parse(ddlEntities.SelectedValue);
  report.inactive = cbInactive.Checked;
  report.name = txtName.Text.Trim();
  report.description = txtDescription.Text.Trim();
  report.report_condition = txtReportCondition.Text.Trim();

  int _so;
  isSortOrderInteger = int.TryParse(txtSortOrder.Text.Trim(), out _so);
  if (isSortOrderInteger) {
    report.sort_order = _so;
  }

  string StrFileName = Path.GetFileName(fuUploadedFile.FileName);

  int IntFileSize = fuUploadedFile.PostedFile.ContentLength;

  if (StrFileName != null && StrFileName != "") {
    string path = Utility.Utility.GenerateTempFileName(StrFileName);
    FileInfo fi = new FileInfo(path);
    fuUploadedFile.PostedFile.SaveAs(path);

    try {
      var extension = Path.GetExtension(StrFileName).Replace(".", "");
      report.report_type = extension;
      if (extension == "mrt") {
        var xml_doc = new XmlDocument();
        xml_doc.Load(path);
        report.report_file = xml_doc.OuterXml;
      } else {
        report.report_file = Convert.ToBase64String(File.ReadAllBytes(path));
      }
    } finally {
      fi.Delete();
    }
  }
}

当我插入一个文件并希望它上传时,它看起来是这样的:在此之前,但是当我按下“保存”按钮时,该文件将被删除并刷新页面。尽管如此,该文件仍在数据库中,但我无法在页面上看到它。在保存之后,它看起来是这样的:之后 为什么会发生这种情况?如何修复它总是在更新之后向我展示的问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-21 18:16:22

文件上传控制只能保存一个回发。当您单击任何导致回发的按钮时,文件上传就会真正开始。一旦完成,您的代码就必须抓取+保存有关该文件的信息。现在完成后面的代码后,文件上传控件将被重新设置,文件将不再被拥有、查看或由上传控件使用。

我也不太确定有一个“编辑”按钮的逻辑。为什么不只有一个保存或提交按钮。我的意思是,一些编辑按钮不会总是被用户点击-他们只会开始键入文本框,然后点击保存。但是如前所述,任何按钮单击(回发)都会导致向上加载启动,然后,正如前面提到的,在回发中您有一次机会获得该信息。

使用编辑按钮的介绍,用户可以使用文件上传来选择一个文件,然后说点击编辑-这将触发回发。

因此,您需要一个保存按钮来消除UI的混乱,但更重要的是,在保存时,您必须保存该文件,更新数据库,实际上,您可能希望隐藏向上加载控件,或者在UI中从向上加载程序页面转移到其他信息显示。因此,您希望用户输入信息,选择一个文件,然后按一个按钮启动向上加载,然后保存输入的信息。如果允许加载附加文件,则希望保存/设置一些隐藏字段,或其他这样的字段来跟踪该问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71207012

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档