以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  代码请教版主  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=95151)

--  作者:cuicuibing
--  发布时间:2017/1/11 15:46:00
--  代码请教版主
有个表格如下: 大约不到10000行。

产品货号     图纸号      图片列
sa7241      sj-01
sa4125      sj-1257
sa5274      sj-1457

图片格式如下:

sj-01.jpg   sj-01-1.jpg   sj-01-02.jpg  (这里图片数量不定,一般为5-20个内)


我计划用ftp远程管理图片,用PictureViewer来显示图片。由于工作量太大,一个个上传太麻烦,想实现自动上传。
我的想法思路如下。遍历当前“产品表”
For Each r As DataRow In DataTables("产品表").DataRows
在指定目录下寻找,等于图纸号,或图纸号 上加  -1  -2  等的jpg的文件。
找到文件后,上传到服务器上面。
上传目录为   根目录/图纸号
举例:   sa7241 的产品货号,   上传后,会在根目录下生成目录:  sj-01
目录: sj-01下面是 上传的图片文件  sj-01.jpg    sj-01-1.jpg   sj-01-02.jpg 

同时在产品表的图片列中,保存文件路径
/根目录/sj-01/sj-01.jpg
/根目录/sj-01/sj-01-1.jpg
/根目录/sj-01/sj-01-02.jpg

图片应经准备好了。
[此贴子已经被作者于2017/1/11 15:48:42编辑过]

--  作者:有点色
--  发布时间:2017/1/11 16:36:00
--  

参考

 

http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=95118&skin=0

 


--  作者:cuicuibing
--  发布时间:2017/1/11 16:44:00
--  
版主,我看了,自己写不出来。
版主帮忙把  根据字段查找文件的那个写出来吧。

还有在图片列中添加路径的
[此贴子已经被作者于2017/1/11 16:48:47编辑过]

--  作者:有点色
--  发布时间:2017/1/11 17:08:00
--  

Dim path As String = "d:\\test\\"
Dim ftp1 As New FtpClient
ftp1.Host="127.0.0.1"
ftp1.Account = "test"
ftp1.Password = "test"
ftp1.UTF8 = True

For Each dr As DataRow In DataTables("表A").Select("图纸号 is not null")
    Dim fpath As String = "/" & dr("图纸号") & "/"
    If ftp1.DirExists(path) = False Then ftp1.MakeDir(path)
    Dim str As String = ""
    For Each f As String In FileSys.GetFiles(path)
        If FileSys.GetName(f).StartsWith(dr("图纸号")) Then
            If ftp1.Upload(f, fpath & filesys.GetName(f)) = True Then
                str &= fpath & FileSys.GetName(f) & vbcrlf
                output.show("上传:" & filesys.GetName(f) & " 成功")
            Else
                output.show("上传:" & filesys.GetName(f) & " 失败")
            End If
        End If
    next
    dr("图片列") = str
Next
ftp1.close


--  作者:cuicuibing
--  发布时间:2017/1/12 9:04:00
--  

Dim path As String = "d:\\test\\"
Dim ftp1 As New FtpClient
ftp1.Host="127.0.0.1"
ftp1.Account = "test"
ftp1.Password = "test"

ftp1.RootDir ="/产品"
ftp1.UTF8 = True

For Each dr As DataRow In DataTables("表A").Select("图纸号 is not null")
    Dim fpath As String = "/" & dr("图纸号") & "/"
    If ftp1.DirExists(fpath) = False Then ftp1.MakeDir(fpath)


版主,我设置了根目录,为什么无效,新生成的目录跟   /产品  是同一级的,不是在/产品   下一级的

[此贴子已经被作者于2017/1/12 9:05:31编辑过]

--  作者:有点色
--  发布时间:2017/1/12 9:35:00
--  

Dim path As String = "d:\\test\\"
Dim ftp1 As New FtpClient
ftp1.Host="127.0.0.1"
ftp1.Account = "test"
ftp1.Password = "test"
ftp1.UTF8 = True

For Each dr As DataRow In DataTables("表A").Select("图纸号 is not null")
    Dim fpath As String = "/产品/" & dr("图纸号") & "/"
    If ftp1.DirExists(path) = False Then ftp1.MakeDir(path)
    Dim str As String = ""
    For Each f As String In FileSys.GetFiles(path)
        If FileSys.GetName(f).StartsWith(dr("图纸号")) Then
            If ftp1.Upload(f, fpath & filesys.GetName(f)) = True Then
                str &= fpath & FileSys.GetName(f) & vbcrlf
                output.show("上传:" & filesys.GetName(f) & " 成功")
            Else
                output.show("上传:" & filesys.GetName(f) & " 失败")
            End If
        End If
    next
    dr("图片列") = str
Next
ftp1.close