Foxtable(狐表)用户栏目专家坐堂 → [求助]批量上传图片时有些图片无法上传


  共有4216人关注过本帖树形打印复制链接

主题:[求助]批量上传图片时有些图片无法上传

帅哥哟,离线,有人找我吗?
rainbow_59
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:34 积分:742 威望:0 精华:0 注册:2017/9/21 11:16:00
[求助]批量上传图片时有些图片无法上传  发帖心情 Post By:2019/7/1 15:52:00 [只看该作者]

图片名称一致,为"fl4",只在后面添加“1”、“2”、“3”....加以区别。有三张图片,格式为jpeg,通过循环语句用下面的代码上传至ftp,其中s是ftp中已经存在的pdf格式文件但只能上传图1和图3,图2传不上去,为什么?

Dim i As Integer
Dim fl5 As String
Dim s8 As String
For i = 1 To 3
    fl5 = fl4 & i & ".jpeg"
    'msgbox(fl5)
    s8 = s.Replace(".pdf",i & ".jpeg") 
    'msgbox(s3)
    If ftp1.Upload(fl5, s8, True) = True Then
          Messagebox.show("图片格式的合同上传成功!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
    Else
          Messagebox.show("图片格式的合同上传失败!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
    End If
    i = i + 1
Next

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/7/1 16:19:00 [只看该作者]

1、弹出这两个值看一下

 

   msgbox(fl5)

   msgbox(s8)
 
2、请确认fl5对应的文件存在,以及s8对应的文件夹存在

 回到顶部
帅哥哟,离线,有人找我吗?
rainbow_59
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:34 积分:742 威望:0 精华:0 注册:2017/9/21 11:16:00
  发帖心情 Post By:2019/7/1 16:37:00 [只看该作者]

谢谢老师回应。
对应的文件均正确,且图1和图3也从本地文件夹上传到目标文件夹。只是图2没有上传到位。代码没有错误吧?

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/7/1 16:47:00 [只看该作者]

代码没问题,请做一个实例发上来测试。

 


 回到顶部
帅哥哟,离线,有人找我吗?
rainbow_59
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:34 积分:742 威望:0 精华:0 注册:2017/9/21 11:16:00
  发帖心情 Post By:2019/7/1 21:40:00 [只看该作者]

发现一个奇怪的现象:当有n个图片时,只能上传奇数1、3、5、7,偶数就不上传。加了步长 "For i = 1 To n Step 1" 也没有用。

 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110750 积分:563676 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/7/1 21:48:00 [只看该作者]

完整代码发上来看看。

直接上传第二张图有没有问题?

ftp1.Upload("2.jpeg", "2.jpeg", True)

第三个参数改为false试试

 回到顶部
帅哥哟,离线,有人找我吗?
rainbow_59
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:34 积分:742 威望:0 精华:0 注册:2017/9/21 11:16:00
  发帖心情 Post By:2019/7/1 23:20:00 [只看该作者]

直接上传图2则没有问题

 回到顶部
帅哥哟,离线,有人找我吗?
rainbow_59
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:34 积分:742 威望:0 精华:0 注册:2017/9/21 11:16:00
  发帖心情 Post By:2019/7/2 0:03:00 [只看该作者]

第三个参数改为false后,也只上传单数图片。

 

设计思路:利用窗口生成WordReport,窗口有一批准按钮供经理审批合同。批准后生成一份PDF格式的合同,并将将PDF合同转换为图片,用于线上盖章。按钮的代码如下:

 

MessageBox.Show("已经批准,等待生成批准后的合同版本...")
Dim tm As String  = ProjectPath & "RemoteFiles" & s ’s是备注列中包含路径合同文本名称
ShowAppWindow(tm,5) '关闭窗口审查的文档
Forms("合同审查").Close()
Dim fl1 As String = ProjectPath & "Reports\" & s3 '指定目标文件
'MessageBox.Show(fl1)
s = s.Replace(".doc",".pdf")
Dim fl2 As String = ProjectPath & "RemoteFiles" & s
Dim wrt As New WordReport(Tables("合同审批"),tm,fl1)
wrt.Build() '生成报表
wrt.SaveToPDF(fl2) '保存为PDF文件
wrt.Quit() '退出

MessageBox.Show("等待合同上传...")
Dim sdt As Date = Date.Now
While Date.Now < sdt.AddSeconds(5)
    Application.DoEvents
End While

 

Dim ftp1 As new ftpclient
ftp1.host="192.169.1.106"
ftp1.Account = "ftpuser"
ftp1.password = "123456"
If ftp1.Upload(fl2,s, True) = True Then '将PDF格式文本上传
   Messagebox.show("PDF格式上传成功!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
Else
   Messagebox.show("PDF格式上传失败!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
End If

 

Dim app As New MSWord.Application
Dim doc = app.Documents.Open(tm)
Dim allpage = doc.ComputeStatistics(msWord.WdStatistic.wdStatisticPages) '计算文档页数
'msgbox(allpage)
app.Documents.Save()
app.Quit

Dim fl4 As String = fl2.Replace(".pdf","") ‘去掉PDF格式文本的后缀
'msgbox(fl4)
ConvertPDF2Image(fl2, fl4, "", 1,allpage,ImageFormat.Jpeg, Definition.Two) ‘将PDF格式文档转换为图片
msgbox("合同已转换为图片格式,准备上传...")


Dim i As Integer
Dim fl5 As String
Dim s8 As String
For i = 1 To allpage Step 1
    fl5 = fl4 & i & ".jpeg"
    'msgbox(fl5)
    s8 = s.Replace(".pdf",i & ".jpeg")
    'msgbox(s8)
    If ftp1.Upload(fl5, s8, False) = True Then
          Messagebox.show("图片格式的合同" & i & "上传成功!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
    Else
          Messagebox.show("图片格式的合同上传失败!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
    End If
    i = i + 1
Next


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/7/2 8:59:00 [只看该作者]

以下是引用rainbow_59在2019/7/1 21:40:00的发言:
发现一个奇怪的现象:当有n个图片时,只能上传奇数1、3、5、7,偶数就不上传。加了步长 "For i = 1 To n Step 1" 也没有用。

 

这个代码多余,删除,即可

 

i = i + 1


 回到顶部
帅哥哟,离线,有人找我吗?
rainbow_59
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:34 积分:742 威望:0 精华:0 注册:2017/9/21 11:16:00
  发帖心情 Post By:2019/7/2 10:00:00 [只看该作者]

非常感谢!问题解决!

 回到顶部