ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 1121|回复: 6

[求助] 如何使用VBA上传图片文件到服务器

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-6-28 00:55 | 显示全部楼层 |阅读模式
本帖最后由 天竺 于 2023-6-28 00:59 编辑

我这里有一个图片空间, 我想用vba实现上传本地文件到空间中


通过抓包,得到post请求的内容, 并用VBA成功发送了post请求(没有包含图片编码,但得到了success的返回值,理论上把图片编码加上就应该能成功上传)
但我不知道怎么把图片文件转换成编码,试了base64,和别的帖子的大佬写的转换成比特流都没成功,也有很大可能是我代码写错了。
折腾了2天还是不得要领,请论坛大佬教我。。。。。。。。。
下面附上请求头和请求内容,可以直接复制到postman里测试


请求URL:https://www.lunarandluxe.com/wp-admin/async-upload.php

header必要的字段为
Content-Length:(这个字段的值是postman自己生成的
Host:(这个字段的值是postman自己生成的)
Content-Type:multipart/form-data; boundary=----WebKitFormBoundarypMacR2gvA1xD5ESg
Cookie:wordpress_sec_68d8cdffc23363652f11093230b299be=user%7C1687935190%7C6YQpLpwux4sEEx4kKYKp8OXVnFqRGQ6XaeSWIgG9ufT%7C2d71ab0c8b5785c023c19782e904284da3f29b7f532bd26982c942b63212ea27; wordpress_test_cookie=WP%20Cookie%20check; wordpress_logged_in_68d8cdffc23363652f11093230b299be=user%7C1687935190%7C6YQpLpwux4sEEx4kKYKp8OXVnFqRGQ6XaeSWIgG9ufT%7Cc01ffb42b51a4bd6453185596297038267bec19b752c600492f1139cf38394f9; tk_ai=woo%3AP3a7bCa3uvYOJY6O6MNRGMC7; woocommerce_items_in_cart=1; woocommerce_cart_hash=c3aa56283b151c5109eb28b4924493bf; wp_woocommerce_session_68d8cdffc23363652f11093230b299be=9%7C%7C1687935203%7C%7C1687931603%7C%7Ca2bee90deb451c66df20926c9ac8c257; woodmart_recently_viewed_products=7873%7C7873; wp-settings-time-9=1687855569; wp-settings-9=edit_element_vcUIPanelWidth%3D648%26ampampampedit_element_vcUIPanelLeft%3D424px%26ampampampedit_element_vcUIPanelTop%3D165px%26ampampampeditor%3Dhtml%26ampampamplibraryContent%3Dbrowse%26ampampeditor%3Dtinymce%26ampamplibraryContent%3Dbrowse%26ampampposts_list_mode%3Dlist%26ampampedit_element_vcUIPanelLeft%3D36px%26ampampedit_element_vcUIPanelTop%3D160px%26ampampmfold%3Do%26posts_list_mode%3Dlist%26libraryContent%3Dbrowse%26post_settings_vcUIPanelWidth%3D649%26post_settings_vcUIPanelLeft%3D766px%26post_settings_vcUIPanelTop%3D74px%26editor%3Dtinymce%26edit_element_vcUIPanelLeft%3D180px%26edit_element_vcUIPanelTop%3D91px
image.png




body部分是 multipart/form-data格式的图片文件


------WebKitFormBoundarypMacR2gvA1xD5ESg
Content-Disposition: form-data; name="name"


微信图片_20230419170834.jpg
------WebKitFormBoundarypMacR2gvA1xD5ESg
Content-Disposition: form-data; name="action"


upload-attachment
------WebKitFormBoundarypMacR2gvA1xD5ESg
Content-Disposition: form-data; name="_wpnonce"


de280803de
------WebKitFormBoundarypMacR2gvA1xD5ESg
Content-Disposition: form-data; name="post_id"


7701
------WebKitFormBoundarypMacR2gvA1xD5ESg
Content-Disposition: form-data; name="async-upload"; filename="testima11111.jpg"
Content-Type: image/jpeg


这个位置是图片的比特流,太长了我就不贴出来了,大佬可以换个别的图片比特流放在这里,不换也没影响,一样可以推送成功只是没图片而已


------WebKitFormBoundarypMacR2gvA1xD5ESg--

上面body的内容直接复制进postman就可以测试




抓包的body部分截图我放在这里,大佬帮看一下
image.png


如果post成功,会返回success值以及生成的图片链接,链接可以直接打开


image.png


下面是我的代码,post没问题,就是不知道body部分要怎么生成

image.png

请大佬帮帮忙,小弟不胜感激









image.png
image.png
image.png

TA的精华主题

TA的得分主题

发表于 2023-6-28 10:31 | 显示全部楼层
本帖最后由 tspliu 于 2023-6-28 10:36 编辑

先从这个帖子下传个图试试
猜测是这样:filePath = "C:\1.jpg" ' 上传的文件路径        ' 读取文件数据    Open filePath For Binary Access Read As #1    requestData = Space$(LOF(1))    Get #1, , requestData    Close #1

微信图片_20230613133235.jpg

TA的精华主题

TA的得分主题

发表于 2023-6-28 10:33 | 显示全部楼层
本帖最后由 perfect131 于 2023-6-28 10:45 编辑

multipart/form-data
我写过,看看
https://club.excelhome.net/threa ... tml?_dsign=35e4d643

Content-Type imagejpeg.zip

1.32 KB, 下载次数: 21

TA的精华主题

TA的得分主题

发表于 2023-6-28 10:45 | 显示全部楼层
上面发的怎么看不到了呢,可能复制少了点东西,只能说试试requestData行不行,我没试
Sub aa()
    Dim requestData As String
    filePath = "d:\1.jpg" ' 上传的文件路径
    ' 读取文件数据
    Open filePath For Binary As #1
    requestData = Space$(LOF(1))
    Get #1, , requestData
    Close #1

    Debug.Print requestData
End Sub

TA的精华主题

TA的得分主题

发表于 2023-6-28 10:51 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
用curl试,提示过期了,不知道是cookie过期还是_wpnonce过期了
image.jpg

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-6-28 23:44 | 显示全部楼层
perfect131 发表于 2023-6-28 10:33
multipart/form-data
我写过,看看
https://club.excelhome.net/threa ... tml?_dsign=35e4d643

我又试了一天还是不成功,提示的是页面过期,我用postman模拟发现header中的content-Length或者content-type如果没有提交或者写错了的话会出现这样的提示,难道是我POST有问题?我不添加任何文件图片内容,直接post空白的文档能成功,加了内容反而无法成功了,这是为什么呢?大佬能给个联系方式现场指导一下吗,实在没辙了

TA的精华主题

TA的得分主题

发表于 2023-6-29 08:48 | 显示全部楼层
天竺 发表于 2023-6-28 23:44
我又试了一天还是不成功,提示的是页面过期,我用postman模拟发现header中的content-Length或者content-t ...

可以,1067039126
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-16 19:44 , Processed in 0.043933 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表