asp.net - 使用 PostedFile.InputStream 两次

标签 asp.net vb.net stream image-resizing imageresizer

我正在尝试将一张图像调整为 5 种不同的尺寸(然后将它们上传到 amazonS3)。

我正在使用 imageresizer.net

问题似乎是我不能使用输入流两次。第一次就可以了。

    Dim SmallStream As Stream = New MemoryStream
    Dim TinyStream As Stream = New MemoryStream

    If FileUpload1.HasFile Then
        **ImageResizer.ImageBuilder.Current.Build(FileUpload1.PostedFile.InputStream, SmallStream, New ResizeSettings("maxwidth=100&maxheight=100"))
        ImageResizer.ImageBuilder.Current.Build(FileUpload1.PostedFile.InputStream, TinyStream, New ResizeSettings("maxwidth=100&maxheight=100"))**
        AmazonUploadFile("SmallImages/" & FileUpload1.FileName, SmallStream)
        AmazonUploadFile("TinyImages/" & FileUpload1.FileName, TinyStream)
    End If




Public Shared Function GetS3Client() As AmazonS3
    Dim appConfig As NameValueCollection = ConfigurationManager.AppSettings
    Dim s3Client As AmazonS3 = AWSClientFactory.CreateAmazonS3Client(AWS_ACCESS_KEY, AWS_SECRET_KEY)
    Return s3Client
End Function

Public Sub AmazonUploadFile(S3Key As String, FileStream As Stream)
    Dim request As New PutObjectRequest()
    request.WithBucketName(BUCKET_NAME)
    request.WithKey(S3Key).InputStream = FileStream
    request.WithCannedACL(S3CannedACL.PublicRead)
    GetS3Client.PutObject(request)
End Sub

当我第二次尝试检索 FileUpload1.PostedFile.InputStream 时,代码中断。

最佳答案

我相信 ImageResizer 会接受该方法的 Image 对象。因此,您可以先将 InputStream 读入 Image 对象 (Image.FromStream()),然后您可以重复使用该图像对象。

关于asp.net - 使用 PostedFile.InputStream 两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9807644/

相关文章:

algorithm - 处理来自套接字的碎片化输入的一般方法

asp.net - 关于字符串生成器

C# 在 try catch 的 catch 中使用 Continue

.net - 如何通过索引而不是显式名称访问数据转发器的项目?

asp.net - 关键字 'user' 附近的语法不正确 - 如何编写我的查询 - VB.net 和 Sql Server

c# - ReadToEndAsync 是阻塞的,如何让它异步运行?

node.js - 写入生成的进程stdin nodejs?

c# - ASP.NET Core 2 - ReSharper "Create Razor View"将新 View 添加到 Pages 文件夹

asp.net - 默认 Razor cshtml 命名空间在哪里定义?

mysql - 从类型 'DBNull' 到类型 'Double' 的转换无效