| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1812 人关注过本帖, 1 人收藏
标题:VFP 上传文件到WEB服务器
只看楼主 加入收藏
aroffice
Rank: 2
等 级:论坛游民
帖 子:58
专家分:20
注 册:2011-9-23
结帖率:80%
收藏(1)
已结贴  问题点数:10 回复次数:14 
VFP 上传文件到WEB服务器
在一个登录后的网页中,点击选择文件,选中特定文件,然后上传。
我想在VFP自动选中文件,然后上传。有什么好的办法不?
前面我用的是
POWINHTTP = CREATEOBJECT("WinHttp.WinHttpRequest.5.1")
并在VFP中获取相关信息生成POST登录信息的,登录后就可以访问上传文件页面了。
这个网页是在内网之中。
搜索更多相关主题的帖子: 服务器 上传文件 登录 VFP WEB 
2022-11-19 21:48
sam_jiang
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:806
专家分:1231
注 册:2021-10-13
收藏
得分:5 
你可以参考这篇文章。。。
https://blog.
2022-11-19 23:09
aroffice
Rank: 2
等 级:论坛游民
帖 子:58
专家分:20
注 册:2011-9-23
收藏
得分:0 
以下是引用sam_jiang在2022-11-19 23:09:15的发言:

你可以参考这篇文章。。。
https://blog.


我现在已经在前面做好了登录,现在不知道如何加入文件的二进制数据到上传信息中。

                    YMID1=STREXTRACT(POWINHTTP.RESPONSETEXT, [__VIEWSTATE" value="], [" />])
                    YMID2=STREXTRACT(POWINHTTP.RESPONSETEXT, [__EVENTVALIDATION" value="], [" />])
&&设定数据分隔
                    POSTFGF="----WebKitFormBoundarySSoR4BK8bRgIJUh0"

**重新构建POST数据
                    POSTDATA="--"+POSTFGF+CHR(13)
                    POSTDATA=POSTDATA+[Content-Disposition: form-data; name="__VIEWSTATE"]+CHR(13)+CHR(13)+ZHURL(YMID1)+CHR(13)
                    POSTDATA=POSTDATA+"--"+POSTFGF+CHR(13)
                    POSTDATA=POSTDATA+[Content-Disposition: form-data; name="__EVENTVALIDATION"]+CHR(13)+CHR(13)+ZHURL(YMID2)+CHR(13)
                    POSTDATA=POSTDATA+"--"+POSTFGF+CHR(13)
                    POSTDATA=POSTDATA+[Content-Disposition: form-data; name="ctl00$ContentPlaceHolder1$UpFile"; filename="]+[20221119202630ks.xls]+["]+CHR(13)&&文件名
                    POSTDATA=POSTDATA+[ Content-Type: application/vnd.ms-excel]+CHR(13)
                    POSTDATA=POSTDATA+FILETOSTR("20221119202630ks.xls")+CHR(13)&&加入文件的二进制数据
                    POSTDATA=POSTDATA+"--"+POSTFGF+CHR(13)
                    POSTDATA=POSTDATA+[Content-Disposition: form-data; name="ctl00$ContentPlaceHolder1$UploadBtn"]+CHR(13)+CHR(13)
                    POSTDATA=POSTDATA+"--"+POSTFGF+CHR(13)
                    STRTOFILE(POSTDATA,"POSTdata.TXT")

                    POWINHTTP.OPEN("POST", SURL, .F.)
                    POWINHTTP.SETREQUESTHEADER("Content-Type", "multipart/form-data; boundary="+POSTFGF)
*!*                                POWINHTTP.SETREQUESTHEADER ("Content-Length",LEN(POSTSTR))
                    POWINHTTP.SETREQUESTHEADER("Referer", SURLR )
                    POWINHTTP.SEND(POSTSTR)  && 提交表单进行登录
2022-11-20 11:19
sam_jiang
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:806
专家分:1231
注 册:2021-10-13
收藏
得分:0 
sendfile.prg

TEXT to lcXmlString
<?xml version="1.0"?>
<root>
</root>
ENDTEXT

*// 创建 ADO-stream 对象
ado_stream = createobject("ADODB.Stream")
*// 创建包含默认头信息和根节点的 XML文档
xml_dom = CreateObject("Msxml2.DOMDocument.4.0")
*createobject("MSXML2.DOMDocument")
xml_dom.loadXML(lcXmlString)
*// 指定数据类型
xml_dom.documentElement.setAttribute("xmlns:dt", "urn:schemas-microsoft-com:datatypes")
*// 创建一个新节点,设置其为二进制数据节点
l_node1 = xml_dom.createElement("file1")
l_node1.dataType = "bin.base64"
*// 打开Stream对象,读源文件
ado_stream.Type = 1 &&; // 1=adTypeBinary  
ado_stream.Open()
ado_stream.LoadFromFile("c:/aaa.zip")
*// 将文件内容存入XML节点
l_node1.nodeTypedvalue = ado_stream.Read(-1)  &&; // -1=adReadAll
ado_stream.Close()
xml_dom.documentElement.appendChild(l_node1)
*// 可以创建多个二进制节点,一次上传多个文件
*// 把XML文档发送到Web服务器
xmlhttp = createobject("Microsoft.XMLHTTP")
xmlhttp.open("POST","http://9dvfp.,.f.)
xmlhttp.send(xml_dom)
MESSAGEBOX(xmlhttp.ResponseBody)
RELEASE xmlhttp
2022-11-20 12:18
aroffice
Rank: 2
等 级:论坛游民
帖 子:58
专家分:20
注 册:2011-9-23
收藏
得分:0 
回复 4楼 sam_jiang
用这个上传提示不是要求的文件格式,上传失败。无论是XLS文件还是压缩成zip
2022-11-20 13:09
sam_jiang
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:806
专家分:1231
注 册:2021-10-13
收藏
得分:0 
回复 5楼 aroffice
把错误信息截图发上来看看,还有你的upload.asp
2022-11-25 03:25
厨师王德榜
Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18
等 级:贵宾
威 望:199
帖 子:995
专家分:4966
注 册:2013-2-16
收藏
得分:5 
以前做过类似的,但是以前我遇到的情况是,服务器不只有web服务,web服务只是针对前台的,
实际它后台还配置有ftp或mysql服务,上传文件实际是用ftp协议或sql通道传入的,
像这种只有web的,我还未做过.
不妨把服务器的ftp也开通吧,上传文件通过ftp,前台web调用某个文件的仍是自己那一套逻辑,
比如 web要调用A1.pdf ,对web来说,是打开 D:/hpg/pdf/A1.pdf ,对上传ftp来说,
是上传到:ftp://ip/root/hpg/pdf/A1.pdf 虽然实际上两者都是指向同一个文件,但是操作上
两者互相不干扰,这样岂不是更好.

[此贴子已经被作者于2022-11-25 09:19编辑过]

2022-11-25 09:18
aroffice
Rank: 2
等 级:论坛游民
帖 子:58
专家分:20
注 册:2011-9-23
收藏
得分:0 
回复 7楼 厨师王德榜
这个服务器不在我的掌握之中,我如果掌握了一切都要办了
2022-11-25 13:35
sam_jiang
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:806
专家分:1231
注 册:2021-10-13
收藏
得分:0 
前端的upload.asp里要有设置允许上传的文件格式!
2022-11-25 20:19
aroffice
Rank: 2
等 级:论坛游民
帖 子:58
专家分:20
注 册:2011-9-23
收藏
得分:0 
回复 9楼 sam_jiang
只允许上传xls或zip格式
2022-11-29 13:14
快速回复:VFP 上传文件到WEB服务器
数据加载中...
 
   



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

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