FileUpload 컨트롤이있는 HTML 페이지 (확인, ASP.NET)가 있습니다.FileUpload 컨트롤의 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 컨트롤에 표시됩니다. 어떤 이유를 들어
는 하이퍼 링크를 클릭하면 하지이 항목을 열 않습니다.
NavigateUrl이 경로를 표시하는 방식에 문제가 있습니까? 아니면 다른 문제가 있습니까?
C 드라이브의 절대 경로가 아닌 업로드 폴더에 대한 상대 경로가 필요합니다. – Mansfield
간단한 해결책이 있습니까? 'NavigateUrl = '<% # Bind (Server.MapPath ("doc_path")) %>''가 작동하지 않습니다. – jp2code
Claudio Redi의 대답을 참조하십시오. – Mansfield