asp.net - 将文件作为 varbinary(max) 保存到 SQL 的问题
问题描述
所以,我有一个 web 应用程序将一些附件保存到 SQL 数据库中VarBinary(max)
,一切运行顺利,直到我意识到当我从数据库中下载附件时,文件与原始大小相比非常大,所以一个 400KB 的文件,下载一个将是5MB!我做错了什么?
上传代码为:
Dim img As FileUpload = CType(FileUpload1, FileUpload)
Dim imgByte As Byte() = Nothing
If img.HasFile AndAlso Not img.PostedFile Is Nothing Then
Dim File As HttpPostedFile = FileUpload1.PostedFile
imgByte = New Byte(File.ContentLength - 1) {}
File.InputStream.Read(imgByte, 0, File.ContentLength)
cmd.Parameters.AddWithValue("@filetype", Path.GetExtension(FileUpload1.FileName).ToLower)
cmd.Parameters.AddWithValue("@attachment", imgByte)
End If
下载代码:
Dim imagem As Byte() = CType((dr("attachment")), Byte())
Response.Clear()
Response.AddHeader("Cache-Control", "no-cache, must-revalidate, post-check=0, pre-check=0")
Response.AddHeader("Pragma", "no-cache")
Response.AddHeader("Content-Description", "File Download")
Response.AddHeader("Content-Type", "application/force-download")
Response.AddHeader("Content-Transfer-Encoding", "binary\n")
Dim fileName As String = "attachment; filename=" & "DOC_REFNO_" & "_" & regref_txt.Text.Replace("/", "_") & dr("filetype")
Response.AddHeader("content-disposition", fileName)
Response.BinaryWrite(imagem)
谢谢你们。
解决方案
所以我发现下载的代码不正确,我把它改成下面的代码,完美运行。
Dim imagem As Byte() = CType((dr("attachment")), Byte())
Response.Buffer = True
Response.Charset = ""
Response.Cache.SetCacheability(HttpCacheability.NoCache)
Response.ContentType = ContentType
Dim fileName As String = "attachment; filename=" & "DOC_REFNO_" & "_" & regref_txt.Text.Replace("/", "_") & dr("filetype")
Response.AddHeader("content-disposition", fileName)
Response.BinaryWrite(imagem)
Response.Flush()
Response.End()
推荐阅读
- java - 具有滚动活动的 Android Studio
- flutter - 倒计时的文字转语音
- python - Django - 在保存另一个模型期间保存一个模型
- c# - 是否可以在 LINQ 中使用模型中的嵌套类属性?
- c# - 每个循环的实体框架一个一个
- python - 根据列表中的日期组合值
- generics - 我如何处理 Kotlin 中返回的对象表达式
- laravel - Laravel Migration with Sqlite error: typeSet does not exist
- c++ - C++ - 我如何将整个字符数组放入指针中?
- javascript - Indesign javascript ERROR: MODAL DIALOG OR ALERT IS ACTIVE adobe extendscript toolkit