以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]批量上传图片时有些图片无法上传  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=137239)

--  作者:rainbow_59
--  发布时间: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

--  作者:有点甜
--  发布时间:2019/7/1 16:19:00
--  

1、弹出这两个值看一下

 

   msgbox(fl5)

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

--  作者:rainbow_59
--  发布时间:2019/7/1 16:37:00
--  
谢谢老师回应。
对应的文件均正确,且图1和图3也从本地文件夹上传到目标文件夹。只是图2没有上传到位。代码没有错误吧?
--  作者:有点甜
--  发布时间:2019/7/1 16:47:00
--  

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

 


--  作者:rainbow_59
--  发布时间:2019/7/1 21:40:00
--  
发现一个奇怪的现象:当有n个图片时,只能上传奇数1、3、5、7,偶数就不上传。加了步长 "For i = 1 To n Step 1" 也没有用。
--  作者:有点蓝
--  发布时间:2019/7/1 21:48:00
--  
完整代码发上来看看。

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

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

第三个参数改为false试试

--  作者:rainbow_59
--  发布时间:2019/7/1 23:20:00
--  
直接上传图2则没有问题
--  作者:rainbow_59
--  发布时间: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


--  作者:有点甜
--  发布时间: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
--  发布时间:2019/7/2 10:00:00
--  
非常感谢!问题解决!