来自FileUpload Control的ASP.NET显示文件

时间:2013-07-10 14:51:49

标签: asp.net vb.net

我有一个带有FileUpload控件的HTML页面(OK,ASP.NET)。

<asp:GridView ID="DocGrid" ShowFooter="True" AutoGenerateColumns="False" runat="server" DataKeyNames="doc_id,req_id,doc_name,doc_path" BorderStyle="Solid" BorderWidth="1px" BorderColor="Silver" Width="500px" BackColor="White">
  <Columns>
    <asp:TemplateField HeaderStyle-HorizontalAlign="Left" HeaderText="Document">
      <ItemTemplate>
        <asp:HyperLink ID="HyperLink1" Text='<%# Bind("doc_name") %>' NavigateUrl='<%# Bind("doc_path") %>' Target="_blank" runat="server"></asp:HyperLink>
      </ItemTemplate>
      <FooterTemplate>
        <asp:FileUpload ID="fuFooter" runat="server" Width="350px" />
      </FooterTemplate>
    </asp:TemplateField>
  </Columns>
</asp:GridView>

这不是所有HTML,但它应该是理解问题所需的一切。

在后面的VB代码中,使用以下代码正确保存上传的文件:

Dim fuFooter As FileUpload = CType(DocGrid.FooterRow.FindControl("fuFooter"), FileUpload)
If (fuFooter.HasFile) Then
  Dim uploadDir As String = Server.MapPath(VIRTUAL_REC_DOCS)
  If Not String.IsNullOrEmpty(uploadDir) Then
    Dim item As New ReqDoc()
    item.doc_name = fuFooter.FileName
    item.doc_path = uploadDir & fuFooter.FileName
    fuFooter.SaveAs(item.doc_path)
    item.req_id = Request.QueryString("Req_id")
    DocReqManager.insertReqDoc(item)
    bindDocGridgrid()
  End If
Else
  lblMessage.Text = "No file attached."
End If

事实上,这些文件会上传到我的VIRTUAL_REC_DOCS文件夹并保存到数据库中。

数据绑定后,项目显示在表单的HyperLink控件中。

screenshot

无论出于何种原因,点击HyperLink都会打开该项目。

NavigateUrl显示路径的方式是否存在问题,或者其他情况是否存在?

1 个答案:

答案 0 :(得分:1)

您使用的是物理路径,但需要使用Url文件。 NavigateUrl应该是

NavigateUrl='<%# YourPageClassName.VIRTUAL_REC_DOCS + Bind("doc_name") %>'

YourPageClassName是您网页类的名称。