VB中如何实现上传文件的功能?

VB中如何实现上传文件的功能?,第1张

用script脚本 直接调用 FTP 命令实现上传文件到FTP服务器。

代码如下:

'定义API函数

Const SYNCHRONIZE = &H100000

Const INFINITE = &HFFFFFFFF

Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long

Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long

Private Sub Command1_Click()

Dim filename As String

Dim ftp As String

Dim uname As String

Dim upin As String

ftp = InputBox("请输入服务器地址")

uname = InputBox("请输入帐号", , "anonymous")

upin = InputBox("请输入密码", , "IE@User")

filename = Timer() '取时间为文件名filename

Open filename & ".script" For Output As #1 '生成filename.script脚本,传输FTP用

    Print #1, "user"

    Print #1, uname

    Print #1, upin

    Print #1, "pwd"

    Print #1, "hash"

    Print #1, "put " & filename & ".txt"

    Print #1, "quit"

Close #1

Open filename & ".txt" For Output As #1 '生成的filename.txt保存了combo1和text1的文字

    Print #1, Text1.Text

    Print #1, Combo1.Text

Close #1

DoEvents

'调用ftp命令传输,不需要inet或winsock控件

Dim pId As Long, pHnd As Long

pId = Shell("ftp -n -s:" & filename & ".script" & " " & ftp, vbHide)

pHnd = OpenProcess(SYNCHRONIZE, 0, pId)

If pHnd <> 0 Then

Call WaitForSingleObject(pHnd, INFINITE)

Call CloseHandle(pHnd)

End If

Kill filename & ".script" '因为script脚本保存了帐号和密码,当传输完成后删除filename.script脚本

End Sub

数据的上传就是将档案文件存储到数据表中。在数据上传时,因情况不同一般有两种方式,即单一上传和批量上传,前者指一次上传一个文件(在数据表中增加一条记录),后者指一次将一个文件夹中的所有文件上传到数据库。两者在实质上是统一的,批量上传时,只需用一个循环语句就可。以下介绍单一上传的过程。 1、打开数据表 通过以下语句打开数据表: dim office_rst As New ADODB.Recordset adocon.CursorLocation = adUseClient office_rst.Open "office", adocon, adOpenDynamic, adLockOptimistic, adCmdTable 2、添加新记录并上传文件 假定通过一些 *** 作已经获得了要上传的文件路径和名称(例如,可利用CommomDialog控件获得),保存在string型变量filePath中。上传的关键语句如下: dim adofld As ADODB.Field, DataArr() As Byte, filelen As Long, file_num As Long office_rst.AddNew Set adofld = office_rst("office") adorst("filename").Value = filePath file_num = FreeFile '返回一个 Integer,代表下一个可供Open语句使用的文件号 Open filePath For Binary Access Read As file_num '打开磁盘文件 filelen = LOF(file_num) '求文件长度 ReDim DataArr(filelen) '根据文件长度定义动态数组大小 Get sourcefile, , DataArr '将一个已打开的磁盘文件读入数组变量之中 adofld.AppendChunk DataArr() '将数组内容存入image型字段中 Close file_num '关闭磁盘文件 adorst.update 其中的filename为表office中的一个string型字段,用于存储档案文件的名称。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12075884.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存