ASP.net:如何根据图像的重量、尺寸和大小限制远程图像的负载;类型?

ASP.net:如何根据图像的重量、尺寸和大小限制远程图像的负载;类型?,asp.net,vb.net,image,image-processing,Asp.net,Vb.net,Image,Image Processing,我在VB.net中找到了这个函数,我在一个.aspx页面中使用了这个函数,它可以正常工作 Private Sub LoadImageFromURL(URL As String, ByRef Img As Drawing.Bitmap) Const BYTESTOREAD As Integer = 10000 Dim myRequest As WebRequest = WebRequest.Create(URL) Dim myResponse As WebResponse

我在VB.net中找到了这个函数,我在一个.aspx页面中使用了这个函数,它可以正常工作

Private Sub LoadImageFromURL(URL As String, ByRef Img As Drawing.Bitmap)
    Const BYTESTOREAD As Integer = 10000
    Dim myRequest As WebRequest = WebRequest.Create(URL)
    Dim myResponse As WebResponse = myRequest.GetResponse()
    Dim ReceiveStream As Stream = myResponse.GetResponseStream()
    Dim br As New BinaryReader(ReceiveStream)
    Dim memstream As New MemoryStream()
    Dim bytebuffer As Byte() = New Byte(BYTESTOREAD - 1) {}
    Dim BytesRead As Integer = br.Read(bytebuffer, 0, BYTESTOREAD)
    While BytesRead > 0
        memstream.Write(bytebuffer, 0, BytesRead)
        BytesRead = br.Read(bytebuffer, 0, BYTESTOREAD)
    End While
    Img = New Drawing.Bitmap(memstream)
End Sub
我想基于以下条件限制远程映像的加载:

1) 图像大小限制(字节)

2) 图x,y的最大尺寸

3) 可接受的图像类型(jpg、png)

我不太擅长图像处理,所以如果可能的话,我请求一些帮助来改进功能,并对图像URL启用某种保护,以避免恶意使用

编辑:我必须使用.aspx页面上的函数


谢谢

我转换成一个函数来验证url并工作。 我不知道我是否能让它更轻更快,或者是否有更好的解决方案

Public Function ChkImageFromURL(URL As String) As Boolean
    Dim myRequest As WebRequest = WebRequest.Create(URL)
    myRequest.Method = WebRequestMethods.Http.Head
    Dim myResponse As WebResponse = myRequest.GetResponse()

    Dim ImageLen As Integer = myResponse.ContentLength
    Dim ImageType As String = myResponse.ContentType

    If ( Lcase(ImageType) <> "image/jpeg" AND Lcase(ImageType) <> "image/png" ) Or ImageLen > 300000 Then
        return false
    Else
        return true
    End if
End Function 
公共函数ChkImageFromURL(URL为字符串)为布尔值
Dim myRequest As WebRequest=WebRequest.Create(URL)
myRequest.Method=WebRequestMethods.Http.Head
Dim myResponse作为WebResponse=myRequest.GetResponse()
Dim ImageLen作为整数=myResponse.ContentLength
Dim ImageType为String=myResponse.ContentType
如果(Lcase(ImageType)“图像/jpeg”和Lcase(ImageType)“图像/png”)或ImageLen>300000,则
返回错误
其他的
返回真值
如果结束
端函数

我将其转换为一个函数来验证url并运行。 我不知道我是否能让它更轻更快,或者是否有更好的解决方案

Public Function ChkImageFromURL(URL As String) As Boolean
    Dim myRequest As WebRequest = WebRequest.Create(URL)
    myRequest.Method = WebRequestMethods.Http.Head
    Dim myResponse As WebResponse = myRequest.GetResponse()

    Dim ImageLen As Integer = myResponse.ContentLength
    Dim ImageType As String = myResponse.ContentType

    If ( Lcase(ImageType) <> "image/jpeg" AND Lcase(ImageType) <> "image/png" ) Or ImageLen > 300000 Then
        return false
    Else
        return true
    End if
End Function 
公共函数ChkImageFromURL(URL为字符串)为布尔值
Dim myRequest As WebRequest=WebRequest.Create(URL)
myRequest.Method=WebRequestMethods.Http.Head
Dim myResponse作为WebResponse=myRequest.GetResponse()
Dim ImageLen作为整数=myResponse.ContentLength
Dim ImageType为String=myResponse.ContentType
如果(Lcase(ImageType)“图像/jpeg”和Lcase(ImageType)“图像/png”)或ImageLen>300000,则
返回错误
其他的
返回真值
如果结束
端函数

您可以读取
内容类型
内容长度
标题,如果类型错误或长度太大,则中止操作。感谢您的提示,因此我可以使用myResponse.ContentLength和myResponse.ContentType读取值?。我从来没有想过这种方法:)另外,如果你设置
myRequest.Method=Net.WebRequestMethods.Http.Head
,它只会请求头信息,而不会开始任何下载。这是一个新想法:)为了避免任何混合和错误,可能需要测试一段代码?:)您可以读取
内容类型
内容长度
标题,如果类型错误或长度太大,则中止操作。感谢您的提示,因此我可以使用myResponse.ContentLength和myResponse.ContentType读取值?。我从来没有想过这种方法:)另外,如果你设置
myRequest.Method=Net.WebRequestMethods.Http.Head
,它只会请求头信息,而不会开始任何下载。这是一个新想法:)为了避免任何混合和错误,可能需要测试一段代码?:)