ASP.NET - 如何仅在某些文件类型上执行此功能?

时间:2013-05-28 02:29:00

标签: asp.net download file-extension

只想将此功能与特定的文件扩展名(我定义)一起使用。我怎么能在ASP.net中这样做?

基本上,以下代码允许任何文件能够下载,只需将文件指向此页面.aspx?file={path to file + file}我想要做的就是退出此文件,如果文件没有需要定义的数组的扩展名。例如:只希望通过以下代码下载以下扩展名:.jpg,.jpeg,.bmp,.png,.gif,.pdf,.doc,.docx

<%@ Page language="vb" runat="server" explicit="true" strict="true" %>
<script language="vb" runat="server">
Sub Page_Load(Sender As Object, E As EventArgs)
    Dim strRequest As String = Request.QueryString("file")
    If strRequest <> "" Then
        Dim path As String = Server.MapPath(strRequest)
        Dim file As System.IO.FileInfo = New System.IO.FileInfo(path)
        If file.Exists Then
            Response.Clear()
            Response.AddHeader("Content-Disposition", "attachment; filename=" & file.Name)
            Response.AddHeader("Content-Length", file.Length.ToString())
            Response.ContentType = "application/octet-stream"
            Response.WriteFile(file.FullName)
            Response.End
        Else
            Response.Write("This file does not exist.")
        End If
    Else
        Response.Write("Please provide a file to download.")
    End If
End Sub
</script>

如何更改此选项以将此功能排除在处理所有文件扩展名之外,但列出的内容包括:.jpg,.jpeg,.bmp,.png,.gif,.pdf,.doc,.docx

我在想这里需要注意以下内容:If file.Exists Then需要更改为:If file.Exists AND file.Extension...

1 个答案:

答案 0 :(得分:0)

正如我在评论中提到的,你可以根据要求抓住它。对于多重比较,有一个绝对更优雅的解决方案,但是对于简单的情况,它可以工作:

Dim strRequest As String = Request.QueryString("file").ToLower

If strRequest <> "" AndAlso (strRequest.EndsWith(".jpg") OrElse strRequest.EndsWith(".jpeg") OrElse strRequest.EndsWith(".png") OrElse strRequest.EndsWith(".gif") OrElse strRequest.EndsWith(".pdf") Or strRequest.EndsWith(".doc") Or strRequest.EndsWith(".docx") Or strRequest.EndsWith(".bmp")) Then
   '....
End If