0

Во второй половине дня все,asp.net загрузки файлов (как создать гиперссылку на загруженных документов, отображаемую в моей GridView)

У меня есть простой учебник загрузки файла, который я закончил на сайт, который я развиваю в визуальной studio 2010.

Я просто хочу улучшить сетку, которая показывает загруженный файл, сделав файл ссылкой на этот документ в gridview. Это позволит пользователям затем загрузить файл и просмотреть файл, нажав ссылку в gridview для просмотра файла.

Вот мой код до сих пор ...

<form id="form1" runat="server"> 
<div> 
<table style="width: 90%"> 
    <tr> 
     <td style="width: 100px"> Single File Upload:<br /> 
     <asp:FileUpload ID="FileUpload1" runat="server" /><br /> 
     <asp:Button ID="buttonUpload" runat="server" Text="Upload" /><br /> 
<br /> 
     <asp:GridView ID="UploadedFiles" DataSource="<%# GetUploadList() %>" runat="server" CellPadding="4" ForeColor="#333333" GridLines="None"> 
     <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" /> 
     <RowStyle BackColor="#EFF3FB" /> 
     <EditRowStyle BackColor="#2461BF" /> 
     <SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" /> 
     <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" /> 
     <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" /> 
     <AlternatingRowStyle BackColor="White" /> 
     </asp:GridView> 
    </td> 
    </tr> 
</table> 
</div> 
</form> 

А вот страница .vb

Partial Class test 
Inherits System.Web.UI.Page 

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
    If Not IsPostBack Then 
     UploadedFiles.DataBind() 
    End If 
End Sub 

    Protected Function GetUploadList() As String() 
    Dim folder As String = Server.MapPath("~/Uploads") 
    Dim files() As String = Directory.GetFiles(folder) 
    Dim fileNames(files.Length - 1) As String 
    Array.Sort(files) 

    For i As Integer = 0 To files.Length - 1 
     fileNames(i) = Path.GetFileName(files(i)) 
    Next 

    Return fileNames 
End Function 

Protected Sub UploadThisFile(ByVal upload As FileUpload) 
    If upload.HasFile Then 
     Dim theFileName As String = Path.Combine(Server.MapPath("~/Uploads"), upload.FileName) 
     If File.Exists(theFileName) Then 
      File.Delete(theFileName) 
     End If 
     upload.SaveAs(theFileName) 
    End If 
End Sub 

Protected Sub buttonUpload_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles buttonUpload.Click 
    UploadThisFile(FileUpload1) 
    UploadedFiles.DataBind() 
End Sub 

End Class 

Im не слишком уверены в том, чтобы добавить немного дополнительного кода в разделе Protected Sub UploadThisFile(ByVal upload As FileUpload) ,

Любая помощь в том, чтобы сделать этот статический список элементов, доступных в файле Uploads, в список, содержащий ссылку на эти отдельные документы, значительно оправдан.

Большое спасибо заранее, Бетти

ответ

1

Tweat код таким образом:

Генерация тэгов:

Protected Function GetUploadList() As String() 

     Dim folder As String = Server.MapPath("~/Uploads") 
     Dim files() As String = Directory.GetFiles(folder) 
     Dim fileNames(files.Length - 1) As String 
     Dim lnk As String = String.Empty 
     Array.Sort(files) 

     For i As Integer = 0 To files.Length - 1 
      lnk = " <a href=""Uploads/" & files(i).ToString() & """ target=""_blank"">File</a>" 
      fileNames(i) = Path.GetFileName(files(i)) & lnk 
      lnk = "" 
     Next 

     Return fileNames 

End Function 

доступа каждый GridView ячейка для декодирования разметки:

Protected Sub UploadedFiles_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles UploadedFiles.RowDataBound 

     If e.Row.RowType = DataControlRowType.DataRow Then 

      Dim tcls As TableCellCollection = e.Row.Cells 

      For Each tc As TableCell In tcls 
       tc.Text = Server.HtmlDecode(tc.Text) 
      Next 

     End If 

End Sub  

Если вы хотите, чтобы "<a>" тег, чтобы генерироваться на ваше имя файла можно изменить имя каждому файл так:

fileNames(i) = "<a href=""Uploads/" & Path.GetFileName(files(i).ToString()) & """ target=""_blank"">" & Path.GetFileName(files(i)) & "</a>" 

Надеется, что это помогает.

+0

Добро пожаловать Бетти !. – CoderRoller