高手里面请

fantasy 2000-09-10 03:36:00
用Winsock控件将rtf格式的文件(带照片)以二进制字节数组的形式从客户端传到服务器端后,如何在服务器端重新生成原来的文件,而不是满篇的二进制字符?
方便的话,请给几句例程。谢!

...全文
167 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zzssyyvc 2000-09-14
  • 打赏
  • 举报
回复
winsock一次最大接受8192个字节,你应该把写文件放在Winsock1_DataArrival这个事件中
fantasy 2000-09-14
  • 打赏
  • 举报
回复
那位能帮忙看一下源码?图片和文字都显示不出来,全是二进制。

'发送端:
Private Sub cmdSend_Click()
Dim DataFile As Integer, Fl As Long, Chunks As Integer
Dim Fragment As Integer, Chunk() As Byte, i As Integer
Const ChunkSize As Integer = 16384
FileName = App.Path & "\test.rtf"
DataFile = 1
Open FileName For Binary Access Read As DataFile
Fl = LOF(DataFile)
If Fl = 0 Then Close DataFile: Exit Sub
Chunks = Fl \ ChunkSize
Fragment = Fl Mod ChunkSize
ReDim Chunk(Fragment)
Get DataFile, , Chunk()
Winsock1.SendData Chunk()
ReDim Chunk(ChunkSize)
For i = 1 To Chunks
Get DataFile, , Chunk()
Winsock1.SendData Chunk()
Next i
Close DataFile
MsgBox "文件发送完毕"
End Sub

'接收端
Dim DataFile As Integer, Fl As Long, Chunks As Integer, FileName As String
Dim Fragment As Integer, Chunk() As Byte, iCount As Integer
Const ChunkSize As Integer = 16384

Private Sub cmdSave_Click()
DataFile = 1
Open "test.rtf" For Binary Access Write As DataFile
For i = 0 To UBound(Chunk)
Put DataFile, , Chunk()
Next i
Close DataFile
MsgBox "文件生成完毕", vbInformation, "系统"
End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Winsock1.GetData Chunk(), vbByte + vbArray
End Sub
who 2000-09-12
  • 打赏
  • 举报
回复
什么叫"满篇的二进制字符"?在哪看是那样呀?
songyl 2000-09-11
  • 打赏
  • 举报
回复
只要发送方你是读取的二进制数据,而接收方也同样将二进制数据写入文件,有同样的后缀,就不会有问题,我做过。
bluepeach 2000-09-11
  • 打赏
  • 举报
回复
songyl的方法是对的

7,759

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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