文件后提交到数据库,再导出不能打开

byj2001329 2006-09-29 05:36:07
数据库为sql2000
Dim fs As FileStream
Dim Filedata() As Byte

fs = New FileStream(fileName, FileMode.Open)
Filedata = New Byte(fs.Length) {}
fs.Position = 0
fs.Read(Filedata, 0, Convert.ToInt32(fs.Length))
利用ado.net上传
ds.table(1).rows(1)("FileData")=FileData
adapter1.update(ds)
提交成功后,再从数据库里导出来
FileData = downCmd.ExecuteScalar
'todo建目前不存在的文件夹
....
If Not Directory.Exists(SubPath) Then
Directory.CreateDirectory(SubPath)
End If

fs = New FileStream(SubPath & "\" & FileName, FileMode.OpenOrCreate)
fs.Write(FileData, 0, FileData.Length)
fs.Close()

这个过程有什么错误吗?大多数文件没有问题,可是对于有的文件类型就再打不开了
比如皮肤文件

...全文
150 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Knight94 2006-10-06
  • 打赏
  • 举报
回复
to 从数据库出来后大小变了(字段是image类型)

那你读取有问题。

按照如下去读取:
Dim nRealRead As Integer = fs.Read(Filedata, 0, Convert.ToInt32(fs.Length))
然后比对nRealRead是否等于fs.Length。

其次,在写入的时候,最好看看文件是否已经存在,如果存在的话,最好加上Truncate标示。
byj2001329 2006-10-06
  • 打赏
  • 举报
回复
从数据库出来后大小变了(字段是image类型)
byj2001329 2006-10-06
  • 打赏
  • 举报
回复
不是读取的问题,而是和文件类型有关。具体原因不清楚,现在换用.net自带的J#
的压缩组件,已经没有问题了
谢谢大家帮忙
henrysap 2006-10-01
  • 打赏
  • 举报
回复
你数据库的字段是什么类型?
试试不保存到数据库,读入文件后另存为另一个文件看看是否能打开?
Knight94 2006-10-01
  • 打赏
  • 举报
回复
最好看看文件大小是否一致。
xingyaohua 2006-09-30
  • 打赏
  • 举报
回复
up
byj2001329 2006-09-30
  • 打赏
  • 举报
回复
System.IO.File.Copy(sourceName, SubPath & "\" & FileName,True)
用在什么地方?
dlzhangln 2006-09-29
  • 打赏
  • 举报
回复

System.IO.File.Copy(sourceName, SubPath & "\" & FileName,True)
byj2001329 2006-09-29
  • 打赏
  • 举报
回复
又如何改进呢?
byj2001329 2006-09-29
  • 打赏
  • 举报
回复
还有用zlib.net压缩的文件,上传后再导出文件,就不能解压了
可能的原因有哪些呢?
copico 2006-09-29
  • 打赏
  • 举报
回复
有的文件出问题,是否是因为读写文件的方法破坏的文件的规则

16,556

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧