我正在建立一个网站,允许用户上传/下载/删除/管理数据库中的文件。
澄清一下,web应用程序将文件上传到数据库,而不是文件系统。这是因为服务器的限制,我无法控制它。
我使用文件流将文件转换为blob,然后将其粘贴到数据库中。我想知道的是:
是否有可能获得大文件的文件流的进度?看看到目前为止流了多少,或者设置一个计时器来更新这个值?
我的代码如下:Dim fs As Stream = upload1.PostedFile.InputStream
Dim br As New BinaryReader(fs)
Dim bytes as Byte() = br.ReadBytes(fs.Length)
Dim length As Integer = fs.Length
然后我将"bytes"作为参数添加到我的存储过程中并运行查询。我能添加什么来获取文件流的状态?
我希望这是清楚的,如果不是,我可以澄清。
谢谢!
您可以使用如下代码将一个流复制到另一个流,并在中间插入您的进度代码:
Public Shared Sub Copy(ByVal source As Stream, ByVal destination As Stream, ByVal bufferSize As Integer)
Dim num As Integer
Dim buffer As Byte() = New Byte(bufferSize - 1) {}
Do While (num = source.Read(buffer, 0, buffer.Length) <> 0)
destination.Write(buffer, 0, num)
' insert progress code here
Loop
End Sub