标题:vfp调用IE后,IE会自动弹出文件后,怎样保存此文件到指定的位置
取消只看楼主
xqmxqm01
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2020-9-28
结帖率:50%
已结贴  问题点数:10 回复次数:6 
vfp调用IE后,IE会自动弹出文件后,怎样保存此文件到指定的位置
现在有一个问题,vfp调用IE访问一个指定的接口(比如连接的调用的接口是webapi,文件格式是json),返回的是一个文件,怎样在ie界面隐藏后把这个文件自动保存在指定的文件位置,这样可以方便去读取这个文件的数据?
搜索更多相关主题的帖子: IE vfp 位置 调用 文件 
2020-10-10 16:42
xqmxqm01
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2020-9-28
得分:0 
使用webbrowser控件,如何在下载时不弹出“另存为”,而是能让程序设置到指定的位置保存
2020-10-10 17:01
xqmxqm01
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2020-9-28
得分:0 
回复 4楼 吹水佬
请问能否给个例子参考下,劳驾了
2020-10-12 08:37
xqmxqm01
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2020-9-28
得分:0 
比如我在表单上使用一个webbrowser控件,然后用:Thisform.webbrowser1.Navigate("http://xxx/GetBarcodeData?pdnum=PD06210195"),出现文件下载对话框,提示保存文件对话框,对话框里面显示文件名为:GetBarcodeData.json;(虽然可以设置让IE自动保存的路径,但是要点击保存按钮),现在想做到不提示这个对话框,自动保存到d:\temp\PD06210195.json,这样就可以去读取这个文件的数据,不会改脚本,请赐教
2020-10-12 10:31
xqmxqm01
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2020-9-28
得分:0 
请问有没有解决方案
2020-10-13 10:06
xqmxqm01
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2020-9-28
得分:0 
因10年前就转型管理岗,此次因特殊原因,需要自己动手写个小助手,不过这个问题想办法解决了,现在我把思路分享给大家:
1. 用delphi去写个带参数的传入型号,然后利用delphi去下载下来,因返回的json文件,文件名也可以跟着参数去设定,这样下载下来后就不会混淆。
2. 如果下载成功,delphi返回值给vfp
3. vfp根据返回的成功值,用VFP写个函数解json文件,转换成想要的数据到grid1里面。

delphi最初的测试源码如下(文件名变量需要去设置),注意要用URLMon和ShellApi(uses  URLMon, ShellApi):

function DownloadFile(SourceFile, DestFile: string): Boolean;
begin
try
Result := UrlDownloadToFile(nil, PChar(SourceFile), PChar(DestFile), 0, nil) = 0;
except
Result := False;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
SourceFile:string;
DestFile:string;
begin
   SourceFile:='http://xxxx/Receive/GetBarcodeData?pdnum=PD06210195';
   DestFile:= 'd:\xx\temp\indata\pd06210195.json';
  if DownloadFile(SourceFile, DestFile) then
  begin
    ShowMessage('Download succesful!');
ShellExecute(Application.Handle,PChar('open'),PChar(DestFile),PChar(''),nil,SW_NORMAL)
  end
  else
  ShowMessage('Error while downloading' + SourceFile)
end;
2020-10-13 15:19
xqmxqm01
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2020-9-28
得分:0 
因10年前转管理岗,最近因工作需要,需要做个小助手。碰到这个难题,不过想了一个笨方法去解决这个问题,vfp传递需要调用webapi接口的料号给delphi,delphi再用这参数去设置文件名,下载到指定位置,如果下载成功,返回参数给vfp,vfp收到成功下载的返回值后,写个函数去解读接收到的json文件,显示在grid1里面,虽然有点烦杂,不过最终结果是解决了下载问题

测试的delphi的最初源码如下(测试用就没有设置参数,另注意需要使用URLMon和ShellApi,uses  URLMon, ShellApi):

function DownloadFile(SourceFile, DestFile: string): Boolean;
begin
try
Result := UrlDownloadToFile(nil, PChar(SourceFile), PChar(DestFile), 0, nil) = 0;
except
Result := False;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
SourceFile:string;
DestFile:string;
begin
   SourceFile:='http://xxxx/Receive/GetBarcodeData?pdnum=PD06210195';
   DestFile:= 'd:\xx\temp\indata\pd06210195.json';
  if DownloadFile(SourceFile, DestFile) then
  begin
    ShowMessage('下载成功');
ShellExecute(Application.Handle,PChar('open'),PChar(DestFile),PChar(''),nil,SW_NORMAL)
  end
  else
  ShowMessage('下载出错:' + SourceFile)
end;



2020-10-13 15:41



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-503411-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.117225 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved