2013-07-10 2 views
0

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 컨트롤에 표시됩니다. 어떤 이유를 들어

screenshot

는 하이퍼 링크를 클릭하면 하지이 항목을 열 않습니다.

NavigateUrl이 경로를 표시하는 방식에 문제가 있습니까? 아니면 다른 문제가 있습니까?

+1

C 드라이브의 절대 경로가 아닌 업로드 폴더에 대한 상대 경로가 필요합니다. – Mansfield

+0

간단한 해결책이 있습니까? 'NavigateUrl = '<% # Bind (Server.MapPath ("doc_path")) %>''가 작동하지 않습니다. – jp2code

+0

Claudio Redi의 대답을 참조하십시오. – Mansfield

답변

1

실제 경로를 사용하고 있지만 Url 파일을 사용해야합니다. NavigateUrlYourPageClassName이 페이지 클래스의 이름입니다

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

과 같이해야한다.

+0

페이지가 코드 뒤에 정의 된 'VIRTUAL_REC_DOCS'을 (를) 좋아하지 않습니다. HTML에서 어떻게 정의 할 수 있습니까? – jp2code

+0

@ jp2code는'item.doc_path'를'VIRTUAL_REC_DOCS + item.doc_name'으로 변경합니다. – Mansfield

+0

@ jp2code : 'VIRTUAL_REC_DOCS'은 (는) 어디에 정의되어 있습니까? 페이지 클래스의 일부입니까? –

관련 문제