使用ftp asp.net下载文件

时间:2014-04-11 10:49:09

标签: asp.net ftp download

我正在为我的大学建立一个在线考试试卷目录。学生可以选择年份,然后选择他们想要查看论文的课程,这一切都已完成。我不知道如何让他们下载论文。选择课程后,所有相关论文都会以超链接的形式显示,点击后可以查看或下载论文如何进行此操作?我正在考虑使用ftp服务器(drivehq具体)和asp.net网站,但我找不到好的教程。所有教程都展示了如何下载单个特定文件而不是多个文件。我是否必须为我服务器上的每个文件编码?有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

首先,您必须决定保存文件的位置。它可以在应用程序根目录下的文件夹中,或者如果您要使用SQL FileStreaming(这非常方便,因为它将文件流存储在表中)

我将发布一个示例代码结构,为您提供一个良好的开端,但您必须弄清楚如何最适合您的需要。我已经评论过您必须编写的方法,因此从长远来看,请考虑在这些情况下调用Web服务方法。

我假设您为ExamPaper创建了一个alreday类,它将映射到您正在下载的文件。

我正在获取ExamPapers列表并将列表绑定到具有linkbutton模板的datalist。我在链接按钮单击上传递FileID作为命令参数。然后我将FileID存储在会话变量上。在newPage中,在页面加载时,我只需获取该FileID并获取相关数据和流并将其附加到响应中。我假设你下载word文档,如果没有,你将不得不更改内容类型。

尝试一下,如果您有任何疑问,请尝试在Google上搜索或在此论坛中提问。

<强>码

ListPage.aspx

<asp:DataList ID="PaperList" runat="server" RepeatDirection="Vertical" RepeatLayout="Table">                   
    <ItemTemplate>
    <table>
        <tr>
            <td><asp:LinkButton ID="LinkButton1" CommandArgument ='<%# Eval("FileID")%>' runat="server" Text='<%# Eval("FileName")%>' OnCommand ="btnDownload_Command"></asp:LinkButton></td>
        </tr>
    </table>
    </ItemTemplate>
</asp:DataList>

ListPage.aspx.vb

Dim PaperList As New List(Of ExamPaper)

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

  'You have to write a method to return the list of file with fileName and the unique id(PK)

  PaperList = GetListofPapers()

  'databind the list
  Me.PaperList.DataSource = DTItems
  Me.PaperList.DataBind()                             

End Sub

Protected Sub btnDownload_Command(sender As Object, e As CommandEventArgs)
  Session.Add("FileID", e.CommandArgument)
  Response.Redirect("DownloadDoc.aspx?, False)
End Sub

DownloadDoc.aspx.cs

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
  Dim fileID = Session.Item("FileID")
  Dim fileInfo As New ExamPaper
  Dim binarystream() As Byte

  ' Methot to get other file Info
  fileInfor = getPaperInfor(FileID) 

  ' write the method to convert file to binary
  binarystream = GetStream(fileID) 

  Response.ClearHeaders()
  Response.AppendHeader("Content-Disposition", "attachment; filename=" + fileInfor.FileName )
  Response.ContentType = "application/vnd.openxmlformats-  officedocument.wordprocessingml.document"
  If Not binarystream Is Nothing Then
            Response.BinaryWrite(binarystream)
            Response.Flush()
            Response.Close()
  End If
End Sub