以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  实现ftp文件上传自动分行存放和图片上传前压缩  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=76237)

--  作者:wuzhouji
--  发布时间:2015/10/24 17:30:00
--  实现ftp文件上传自动分行存放和图片上传前压缩
实现的主要功能:
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

--  作者:大红袍
--  发布时间:2015/10/26 10:43:00
--  
mark
--  作者:ljz
--  发布时间:2015/11/12 10:33:00
--  
图片点击可在新窗口打开查看