我尝试从gridview下载文件..我将文件保存在数据库中然后我在网格视图中显示我试试这个
我将数据库表中的文件保存在文件夹中,因此我尝试下载文件
当我这个文件下载但是当我调试代码并检查然后在这一行中有问题 Dim row = db_stu.dResult.Tables(0).Rows(i) dResult节目
docid document docname docextension
1014 System.Byte[] Book2.xlsx .xlsx
然后当我进一步继续docname shows" 1912218726836.xlsx"这个以及文件下载为损坏的
答案 0 :(得分:1)
这两行合在一起是错误的:
Dim binary() As Byte = TryCast(structDb.dstResult.Tables(0).Rows(i).Item("document"), Byte())
Dim ms As MemoryStream = New MemoryStream(binary)
使用TryCast的原因是您尝试投射的对象可能不是您尝试将其投射的类型。在这种情况下,TryCast
将返回Nothing
。使用TryCast
时,应始终对Nothing
进行测试,但您尚未完成此项测试。您正在使用结果,就好像您确定会有该类型的对象一样。如果你知道那么你应该使用DirectCast
而不是TryCast
。
即使您确实知道引用不是针对不同类型的对象而您使用DirectCast
,但是如果您转换为空引用,即Nothing
,那么您可以使用Nothing
。仍然会回到structDb.dstResult.Tables(0).Rows(i).Item("document")
。因此,首先需要确定Byte()
是否可以引用DirectCast
以外的类型的对象。如果它不能使用TryCast
而不是Nothing
。无论哪种方式,该表达式似乎都会产生Nothing
,因此您需要以任何方式检查Dim binary() As Byte = TryCast(structDb.dstResult.Tables(0).Rows(i).Item("document"), Byte())
If binary IsNot Nothing Then
Dim ms As MemoryStream = New MemoryStream(binary)
'...
End If
,例如。
Dim row = structDb.dstResult.Tables(0).Rows(i)
If Not row.IsNull("document") Then
'There is data so go ahead and use it.
Dim binary = DirectCast(row("document"), Byte())
'...
编辑:如果列可以为空,那么您需要首先测试该行是否包含null,然后仅在有一些数据时使用该数据:
<div class="container-fluid">
<button type="button" class="btn btn-info" [routerLink]="['editor/text-properties']">
<object type="image/svg+xml" data="assets/svg/cv_text.svg" class="svg"></object>
</button>
<button type="button" class="btn btn-info" [routerLink]="['editor/image-properties']">
<object type="image/svg+xml" data="assets/svg/cv_image.svg" class="svg"></object>
</button>
<button type="button" class="btn btn-info" [routerLink]="['editor/background-properties']">
<object type="image" data="assets/svg/cv_photo.svg" class="svg"></object>
</button>
<button type="button" class="btn btn-info" [routerLink]="['editor/background-properties']">
<span class="glyphicon glyphicon-photo svg"></span>
</button>
</div>