实现的主要功能:
1、向ftp上传文件时自动分门别类地存放到数据表每条记录对应的单独的文件夹,而不是都放在一个文件夹里,需要自己单独做个ftp文件管理器,窗体代码暂略;
2、可以上传多种格式的文件,但是在上传jpg格式的文件前,会将其压缩到300*300之后再上传,节省ftp存储空间和网络带宽。
Dim dlg As new OpenFileDialog
If dlg.ShowDialog = DialogResult.OK Then
Dim xg As Integer = dlg.FileName.LastIndexOf("\")
Dim fname As String = dlg.FileName.SubString(xg + 1) '获取所选文件名称 ABC.jpg
Dim ifo As new FileInfo(dlg.filename)
Dim ftp As new FTPClient
ftp.host="×××.×××.×××."
ftp.account="XXX"
ftp.password="XXXX"
ftp.changedir("\小修明细\")
Dim fp As String = "小修明细" & Tables("小修明细").Current("序号")
Dim sts As List(of String) = ftp.GetFileList(fp) '获取当前目录的文件列表
If FileSys.DirectoryExists("C:\temp")=False Then '如果目录C:\temp存在
FileSys.CreateDirectory("C:\temp")
End If
If Ifo.Extension="jpg" Then
Dim file As String = dlg.filename
Dim img As image = getImage(file)
Dim bmp As new bitmap(img, 300, 300 * (img.height / img.width))
bmp.save("c:\temp\" & fname)
bmp.Dispose
End If
For Each st As String In sts
If st = fname Then
MessageBox.Show("服务器上存在同名文件!","提醒")
Return '这里是简化了操作,读者可以自己做是否覆盖的功能
End If
Next
e.Form.text = "文件管理器 文件上传中...."
If Ifo.Extension="jpg" Then
If ftp.Upload("c:\temp\" & fname,fp & "\" & fname) = True Then '若成功上传
Functions.Execute("刷新ListView")
e.Form.text = "文件管理器"
MessageBox.Show("上传成功!","提醒")
Else
MessageBox.Show("上传失败!","提醒")
e.Form.text = "文件管理器"
End If
FileSys.DeleteFile("c:\temp\" & fname,2,2)
Else If Ifo.Extension <> "jpg" Then
If ftp.Upload(dlg.filename,fp & "\" & fname) = True Then '若成功上传
Functions.Execute("刷新ListView")
e.Form.text = "文件管理器"
MessageBox.Show("上传成功!","提醒")
Else
MessageBox.Show("上传失败!","提醒")
e.Form.text = "文件管理器"
End If
End If
Dim c As List(of String) = ftp.GetFileList(fp)
Dim a As Integer=c.count
Tables("小修明细").current("文件")="附件数:" & a
End If
同时,对paullqxp 表示感谢,目前所做的供作离不开他的指导
http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&Id=53388