以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  图片,上传到ftp  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=115946)

--  作者:cd_tdh
--  发布时间:2018/3/17 8:51:00
--  图片,上传到ftp
我表A中有一个扩展的图片列,用按钮选择图片直接上传到ftp,上传成功后,怎么直接把路径添加到图片列,省去用管理器添加的过程呢?
--  作者:有点蓝
--  发布时间:2018/3/17 9:31:00
--  
直接赋值
dr("图片") = IIF(dr.isnull("图片"),"",vbcrlf) & "/abc.jpg"
--  作者:cd_tdh
--  发布时间:2018/3/19 17:20:00
--  

Dim ftp1 As new  ftpclient
ftp1.host="*****"
ftp1.Account =  "ftp003"
ftp1.password =  "*****"

Dim dlg As New openFileDialog \'定义一个新的SaveFileDialog
dlg.MultiSelect = True
If dlg.showDialog = DialogResult.Ok Then \'如果用户单击了确定按钮
    If  ftp1.Upload("dlg.FileName",“\\系统更新" , True) = True Then
        Messagebox.show(dlg.FileName & "上传完成!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
    Else
        Messagebox.show(dlg.FileName & "上传失败!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
    End If
End If

 

老师,上面代码执行后提示连接后就退出系统了呢?


--  作者:有点甜
--  发布时间:2018/3/19 17:42:00
--  

试试改成

 

Dim dlg As New openFileDialog \'定义一个新的SaveFileDialog
dlg.MultiSelect = True
If dlg.showDialog = DialogResult.Ok Then \'如果用户单击了确定按钮
    Dim ftp1 As new  ftpclient
    ftp1.host="*****"
    ftp1.Account =  "ftp003"
    ftp1.password =  "*****"
   
    For Each f As String In dlg.FileNames
        If  ftp1.Upload(f,"\\系统更新\\" & filesys.GetName(f) , True) = True Then
            Messagebox.show(dlg.FileName & "上传完成!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
        Else
            Messagebox.show(dlg.FileName & "上传失败!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
        End If
    Next
    ftp1.Close
End If


--  作者:cd_tdh
--  发布时间:2018/3/20 9:08:00
--  

这一句修改为这样就可以了

If  ftp1.Upload(f," " & filesys.GetName(f) , True) = True Then

 

 

[此贴子已经被作者于2018/3/20 9:22:41编辑过]

--  作者:cd_tdh
--  发布时间:2018/3/20 9:42:00
--  

老师,还要麻烦一下,我上传之前,先检查目录是否与表a “项目名称”相同,如相同,就直接上传,如目录不存在,就直接创建后上传到该目录。

上传成功后,将下载路径添加到“缩略图1”中,不用通过FTP管理器去添加,这个代码怎么写?

  

 

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目4.foxdb


以下内容是专门发给有点甜浏览

[此贴子已经被作者于2018/3/20 9:51:55编辑过]

--  作者:有点甜
--  发布时间:2018/3/20 10:26:00
--  
Dim dlg As New openFileDialog \'定义一个新的SaveFileDialog
dlg.MultiSelect = True
If dlg.showDialog = DialogResult.Ok Then \'如果用户单击了确定按钮
    Dim ftp1 As new  ftpclient
    ftp1.host="*******"
    ftp1.Account = "ftp001"
    ftp1.password = "******"
    Dim r As Row = Tables("表A").Current
    Dim ls = r.DataRow.Lines("中标通知书")
    For Each f As String In dlg.FileNames
        Dim file = "/公司业绩/" & r("项目名称") & "/" & filesys.GetName(f)
        If ftp1.DirExists("/公司业绩/" & r("项目名称")) = False Then
            ftp1.MakeDir("/公司业绩/" & r("项目名称"))
        End If
        If  ftp1.Upload(f,file,True) = True Then
            ls.add(file)
        Else
            msgbox("上传" & f & "失败")
        End If
    Next
    r.DataRow.lines("中标通知书") = ls
    ftp1.Close
End If
[此贴子已经被作者于2018/3/20 10:26:03编辑过]

--  作者:cd_tdh
--  发布时间:2018/3/20 10:56:00
--  

老师,我后面的这样写不对,看看

    Dim r As Row = Tables("表A").Current
    Dim ls = r.DataRow.Lines("中标通知书")
    Dim ls1 = r.DataRow.Lines("合同协议书")
    Dim ls2 = r.DataRow.Lines("验收报告")
    For Each f As String In dlg.FileNames
        Dim file = "/公司业绩/" & r("项目名称") & "/" & filesys.GetName(f)
        If ftp1.DirExists("/公司业绩/" & r("项目名称")) = False Then
            ftp1.MakeDir("/公司业绩/" & r("项目名称"))
        End If
        If  ftp1.Upload(f,file,True) = True Then
            ls.add(file)
            ls1.add(file)
            ls2.add(file)
        Else
            msgbox("上传" & f & "失败")
        End If
    Next
    r.DataRow.lines("中标通知书") = ls
    r.DataRow.lines("合同协议书") = ls1
    r.DataRow.lines("验收报告") = ls2
    ftp1.Close
End If


--  作者:有点甜
--  发布时间:2018/3/20 11:17:00
--  
理清你的逻辑,如果多个列需要上传文件,如何区分是要给哪个列上传文件?你可以做三个按钮一个按钮对应一个列。
--  作者:cd_tdh
--  发布时间:2018/3/20 14:17:00
--  

明白怎么弄了,直接写到CellButtonClick事件,判断列名就没问题了。

新问题,当上传的文件名一样,怎么覆盖原来的文件,或是提示是否覆盖原来的文件,覆盖后不在写入路径。

[此贴子已经被作者于2018/3/20 14:20:30编辑过]