| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1021 人关注过本帖, 1 人收藏
标题:vfp 如何模拟post multipart/form-data上传参数和图片
只看楼主 加入收藏
ljb8864
Rank: 1
等 级:新手上路
帖 子:169
专家分:7
注 册:2023-6-4
结帖率:2.78%
收藏(1)
已结贴  问题点数:20 回复次数:12 
vfp 如何模拟post multipart/form-data上传参数和图片
主要图片不好上传,vb可以用ado.stream和StrConv(S1, vbFromUnicode) 和leftB(),但vfp不行.
哪位大神帮下!

[此贴子已经被作者于2023-6-4 14:22编辑过]

搜索更多相关主题的帖子: 上传 post 图片 参数 vfp 
2023-06-04 14:01
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10543
专家分:42958
注 册:2014-5-20
收藏
得分:20 
multipart/form-data:指定传输数据为二进制类型
VFP通常的“二进制类型”是0h开头十六进制码表达的字符串
可以用CREATEBINARY()将字符型数据转换为二进制字符型数据

2023-06-04 15:11
ljb8864
Rank: 1
等 级:新手上路
帖 子:169
专家分:7
注 册:2023-6-4
收藏
得分:0 
回复 2楼 吹水佬
------WebKitFormBoundaryAx0QwuMECh2eIreV
Content-Disposition: form-data; name="jobNo"

022289
------WebKitFormBoundaryAx0QwuMECh2eIreV
Content-Disposition: form-data; name="fileItemName"; filename="人脸.jpg"
Content-Type: application/octet-stream
Content-Transfer-Encoding: binary

<<filrtostr(x)>>
------WebKitFormBoundaryAx0QwuMECh2eIreV--


send(createbin(...))
返回↓

Array
(
    [flag] =>
    [message] => 上传失败:Bogus Huffman table definition `D:/www/pics/101/yc/100/008/65_1V20MQ.jpg' @ error/jpeg.c/JPEGErrorHandler/347#0 D:\www\web\imgServerYuanli\protected\controller\UploadController.php(712): Imagick->__construct('D:/www/pics/101...')
#1 D:\www\web\imgServerYuanli\protected\controller\UploadController.php(41): UploadController->checkinUpload2()
#2 D:\www\web\imgServerYuanli\dooFrame\app\DooWebApp.php(85): UploadController->serviceAction()
#3 D:\www\web\imgServerYuanli\dooFrame\app\DooWebApp.php(34): DooWebApp->route_to()
#4 D:\www\web\imgServerYuanli\index.php(27): DooWebApp->run()
#5 {main}
    [url] => /101/yc/100/008/65_1V20MQ.jpg
    [ret] => -1
)
Array
(
    [jobNo] => 022289
)
Array
(
)
2023-06-04 17:50
ljb8864
Rank: 1
等 级:新手上路
帖 子:169
专家分:7
注 册:2023-6-4
收藏
得分:0 
jonNo 传上了,图没有
2023-06-04 17:52
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10543
专家分:42958
注 册:2014-5-20
收藏
得分:0 
不明具体上载代码
2023-06-04 19:13
ljb8864
Rank: 1
等 级:新手上路
帖 子:169
专家分:7
注 册:2023-6-4
收藏
得分:0 
回复 5楼 吹水佬
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

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

ENDTEXT
cData=CREATEBINARY(cData)

objHTTP = CREATEOBJECT("MSXML2.XMLHTTP")
objHTTP.Open("POST", strWebserviceURL, 0)
objHTTP.setRequestHeader("content-type", "multipart/form-data; boundary="+Boundary+";")  

objHTTP.Send(  cData  )
2023-06-04 19:45
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10543
专家分:42958
注 册:2014-5-20
收藏(1)
得分:0 
猜测一下,试试:
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
2023-06-04 22:16
ljb8864
Rank: 1
等 级:新手上路
帖 子:169
专家分:7
注 册:2023-6-4
收藏
得分:0 
回复 7楼 吹水佬
cData = CREATEBINARY(cData)+ CREATEBINARY(FILETOSTR(cFileName))
cData = cData +  CREATEBINARY(0h0D0A+"--"+Boundary+"--"+0h0D0A)

以上成功了,感恩大师
你加的0h0D0A什麼意思?
Array
(
    [flag] =>
    [message] => 上传成功
    [url] => /101/yc/100/008/68_I2V25A.jpg
    [ret] => 1
)
Array
(
    [jobNo] => 022289
)
Array
(
)
2023-06-04 22:43
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10543
专家分:42958
注 册:2014-5-20
收藏
得分:0 
0h0D0A 相当于CHR(13)+CHR(10)的二进制数据字符串
2023-06-04 22:59
ljb8864
Rank: 1
等 级:新手上路
帖 子:169
专家分:7
注 册:2023-6-4
收藏
得分:0 
回复 9楼 吹水佬
奇怪为何《》赋值就不行
2023-06-04 23:03
快速回复:vfp 如何模拟post multipart/form-data上传参数和图片
数据加载中...
 
   



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

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