以文本方式查看主题

-  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=97195)

--  作者:douglas738888
--  发布时间:2017/3/7 20:33:00
--  FTP批量上传,失败

请教老师,以下代码批量上传文件,路径上有问题,提示上传失败,不知应该改,请教请教

 

filemanager1 能显示多个文件名,但是无法上传到服务器

用msgbox(fp & "/" & fname)弹出的路径是  

\\\\WJY\\F:\\WJY\\AAA.JPG\\F:\\WJY\\AAA.JPG

\\\\WJY\\F:\\WJY\\BBB.JPG\\F:\\WJY\\BBB.JPG

 

Dim dlg As new OpenFileDialog
Dim piv As WinForm.FileManager = e.Form.Controls("FileManager1")
    dlg.Filter= "图形文件|*.bmp;*.jpg;*.gif"
    dlg.MultiSelect = True  \'文件多选

    If dlg.ShowDialog = DialogResult.OK Then
    For Each fname As String In dlg.FileNames
    piv.AddFile(fname)

 

    Dim r As Row = Tables("上传文件_Table1").Current
   
 

    Dim ftp As new FTPClient
    ftp.host="*****"
    ftp.Port = 21
    ftp.account="******"
    ftp.password="*****"
    ftp.Connect

    If ftp.Connected = True Then
        msgbox("链接成功,准备上传!")
    End If

 

    If ftp.DirExists("\\WJY\\" & Tables("上传文件_Table1").Current("相片")) = False Then
       ftp.MakeDir("\\WJY\\" & Tables("上传文件_Table1").Current("相片")) \'服务器上生成文件夹
    End If

    Dim fp As String = "\\WJY\\" & Tables("上传文件_Table1").Current("相片")
    e.Form.text = "文件上传中...."


    If ftp.Upload(dlg.FileName,fp & "\\" & fname,True) = True Then  \'若成功上传
        e.Form.text = "上传新文件"
        MessageBox.Show("上传成功!","提醒")

        If r.IsNull("相片") Then
            r("相片") = fp & "\\" & fname
        Else
            r("相片") = r("相片") & vbcrlf & fp & "\\" & fname

         End If
      End If
msgbox(fp & "/" & fname)
   Next
End If

[此贴子已经被作者于2017/3/7 20:33:12编辑过]

--  作者:有点蓝
--  发布时间:2017/3/7 21:32:00
--  
Tables("上传文件_Table1").Current("相片")存储的是什么数据?目录,还是文件名?

If ftp.Upload(dlg.FileName,fp & "\\" & FileSys.GetName(fname),True) = True Then  \'若成功上传

--  作者:douglas738888
--  发布时间:2017/3/7 21:56:00
--  

Tables("上传文件_Table1").Current("相片")存储的是什么数据?目录,还是文件名? 

 

是多文件的文件名


--  作者:douglas738888
--  发布时间:2017/3/7 22:04:00
--  

错误图片

 

 


图片点击可在新窗口打开查看此主题相关图片如下:11.jpg
图片点击可在新窗口打开查看

 


 


图片点击可在新窗口打开查看此主题相关图片如下:22.jpg
图片点击可在新窗口打开查看

--  作者:有点蓝
--  发布时间:2017/3/7 22:47:00
--  
Dim dlg As new OpenFileDialog
Dim piv As WinForm.FileManager = e.Form.Controls("FileManager1")
    dlg.Filter= "图形文件|*.bmp;*.jpg;*.gif" 
    dlg.MultiSelect = True  \'文件多选
    If dlg.ShowDialog = DialogResult.OK Then
    For Each fname As String In dlg.FileNames
    piv.AddFile(fname)
 
    Dim r As Row = Tables("上传文件_Table1").Current
    
    Dim ftp As new FTPClient
    ftp.host="*****"
    ftp.Port = 21
    ftp.account="******"
    ftp.password="*****"
    ftp.Connect
    If ftp.Connected = True Then
        msgbox("链接成功,准备上传!")
    End If
 
    If ftp.DirExists("\\WJY\\") = False Then
       ftp.MakeDir("\\WJY\\")) \'服务器上生成文件夹
    End If
    Dim fp As String = "\\WJY\\" & FileSys.GetName(fname)
    e.Form.text = "文件上传中...."

    If ftp.Upload(dlg.FileName,fp,True) = True Then  \'若成功上传
        e.Form.text = "上传新文件"
        MessageBox.Show("上传成功!","提醒")
        If r.IsNull("相片") Then
            r("相片") = fp 
        Else
            r("相片") = r("相片") & vbcrlf & fp 
         End If
      End If
msgbox(fp & "/" & fname)
   Next
End If

--  作者:douglas738888
--  发布时间:2017/3/9 14:40:00
--  

感谢老师的指导,后来我又调整了//,让文件名前符匹配,现在存在如下问题

 

1.批量上传图片到服务器上可以实现,服务器里面的文件夹里面也有上传的图片,但是 PictureViewer1里面只会显示其中一张图片,或者都不显示图片,只显示文件名

 

2.如果只上传一张图片,PictureViewer1里面开始只显示小红叉,切换表行再返回到当前行后,图片能显示,同时RemoteFiles远程文件夹里面自动下载图片进来,如果把

   RemoteFiles里面的当前图片删除,PictureViewer1就不显示图片

 

 

代码如下

Dim dlg As new OpenFileDialog
Dim piv As WinForm.PictureViewer = e.Form.Controls("PictureViewer1")
    \'dlg.Filter= "图形文件|*.bmp;*.jpg;*.gif"
    dlg.MultiSelect = True  \'文件多选
    If dlg.ShowDialog = DialogResult.OK Then
    For Each fname As String In dlg.FileNames
    piv.AddFile("//" & FileSys.GetName(fname))
 
    Dim r As Row = Tables("上传文件_Table1").Current
   
    Dim ftp As new FTPClient
    ftp.host="*****"
    \'ftp.Port = 21
    ftp.account="****"
    ftp.password="****"
    ftp.Connect
    If ftp.Connected = True Then
        msgbox("链接成功,准备上传!")
    End If
 
    If ftp.DirExists("\\WJY\\") = False Then
       ftp.MakeDir("\\WJY\\") \'服务器上生成文件夹
    End If
    Dim fp As String = "\\WJY\\" & FileSys.GetName(fname)
    e.Form.text = "文件上传中...."


    If ftp.Upload(dlg.FileName,fp,True) = True Then  \'若成功上传
        e.Form.text = "上传新文件"
        MessageBox.Show("上传成功!","提醒")
           End If
     Next
End If

 

示例图片


此主题相关图片如下:44.jpg
按此在新窗口浏览图片


 


此主题相关图片如下:33.jpg
按此在新窗口浏览图片

--  作者:有点色
--  发布时间:2017/3/9 14:47:00
--  

你可以在上传成功以后,把图片复制到 RemoteFiles 文件夹里面

 

FileSys.CopyFile(fname, ProjectPath & "/" & FileSys.GetName(fname), true)

piv.AddFile("//" & FileSys.GetName(fname))

[此贴子已经被作者于2017/3/9 14:47:03编辑过]

--  作者:有点色
--  发布时间:2017/3/9 14:48:00
--  

而且,你上传de时候,写错了

 

If ftp.Upload(fname,fp,True) = True Then  \'若成功上传


--  作者:douglas738888
--  发布时间:2017/3/9 15:58:00
--  
老师,如果要在 RemoteFiles 里面才能显示的话,这样太占空间了,另外也不利于文件的权限管理,如果A用户要查看B用户已经上传的文件,是无法看到的(只有文件名),除非要下载下来才行。
--  作者:有点色
--  发布时间:2017/3/9 16:56:00
--  

先看8楼,改一下代码看行不行。