| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1018 人关注过本帖, 1 人收藏
标题:vfp 如何模拟post multipart/form-data上传参数和图片
只看楼主 加入收藏
ljb8864
Rank: 1
等 级:新手上路
帖 子:169
专家分:7
注 册:2023-6-4
收藏
得分:0 
可能text 对文件处理了或裁了一部分
2023-06-05 05:52
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10541
专家分:42927
注 册:2014-5-20
收藏
得分:0 
以下是引用ljb8864在2023-6-4 22:43:27的发言:

cData = CREATEBINARY(cData)+ CREATEBINARY(FILETOSTR(cFileName))
cData = cData +  CREATEBINARY(0h0D0A+"--"+Boundary+"--"+0h0D0A)


都用CREATEBINARY转换可以的话,原来的问题可能出在HTTP协议报文格式。
7楼的代码中用注释强调了一点:“这时cData以0h0D0A0D0A结束”
通常“报文头”与“报文数据”是用0h0D0A0D0A来分隔。
试试在Content-Type: image/jpg下面加多一空行:
TEXT TO cData TEXTMERGE NOSHOW PRETEXT 3
.......
Content-Type: image/jpg


<<filetostr(cfile)>>
--<<Boundary>>--

ENDTEXT



2023-06-05 06:26
aroffice
Rank: 1
等 级:新手上路
帖 子:54
专家分:0
注 册:2011-9-23
收藏
得分:0 
以下是引用吹水佬在2023-6-4 22:16:46的发言:

猜测一下,试试:
cFileName = "D:\temp\人脸.jpg"

Boundary= "----WebKitFormBoundaryAx0QwuMECh2eIreV"

TEXT TO cData TEXTMERGE NOSHOW PRETEXT 3
--<<Boundary>>
Content-Disposition: form-data; name="jobNo"

<<"022289">>
--<<Boundary>>
Content-Disposition: form-data; name="fileItemName"; filename="<<LOWER(cFileName)>>"
Content-Type: image/jpg


ENDTEXT    && 这时cData以0h0D0A0D0A结束
cData = STRCONV(cData,5) + CREATEBINARY(FILETOSTR(cFileName))
cData = cData + STRCONV(0h0D0A+"--"+Boundary+"--"+0h0D0A,5)
objHTTP = CREATEOBJECT("MSXML2.ServerXMLHTTP")
objHTTP.Open("POST", strWebserviceURL, 0)
objHTTP.setRequestHeader("Content-Type", "multipart/form-data; boundary="+Boundary)  
objHTTP.setRequestHeader("Content-Length", LEN(cData))
objHTTP.send(cData)
**objHTTP.waitForResponse

相问一下上传文件(XLS)是否可以这样使用呢?
2023-08-11 12:38
快速回复:vfp 如何模拟post multipart/form-data上传参数和图片
数据加载中...
 
   



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

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