Foxtable(狐表)用户栏目专家坐堂 → 关于上传pdf文件到微信小程序的云存储里面


  共有3942人关注过本帖树形打印复制链接

主题:关于上传pdf文件到微信小程序的云存储里面

帅哥哟,离线,有人找我吗?
lemonkashi
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:215 积分:1682 威望:0 精华:0 注册:2017/9/26 13:40:00
关于上传pdf文件到微信小程序的云存储里面  发帖心情 Post By:2021/7/18 19:05:00 [只看该作者]

老师好
工作中在做小程序开发 需要我们网站的pdf文件传到小程序的云存储空间里面。
遇到的问题是调用上传接口第一步成功了 应该是在进行第二步才能在云存储空间中显示 但是第二步 现在搞不定了 所以请教老师
调用微信接口文件链接如下:
https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-http-api/storage/uploadFile.html

CSDN 博客参考文章    通过python 实现的例子

https://blog.csdn.net/weixin_42776828/article/details/104581180

涉及到要将文件转成二进制  这个有点搞不定了。
以下是我第一步 调用的代码  调用成功
Dim url As String = "https://api.weixin.qq.com/tcb/uploadfile?access_token={0}"
Dim txtInfo As WinForm.TextBox = e.Form.Controls("txtInfo")
Dim hc As New HttpClient(CExp(url, Functions.Execute("GetAccessToken")))
Dim jo As New JObject()
jo("env") = "rainkeji_e0jcd3239b6"
jo("path") = "D:/WorkStation/3232.pdf"
hc.Content = jo.ToString()
jo = JObject.Parse(hc.GetData)


参考上面第二个链接的意思还需要在请求一次才可以  第二次请求的方式有点不会写了.涉及传两个参数和文件转换成二进制。


谢谢老师

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111414 积分:567140 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/7/18 21:20:00 [只看该作者]

参考:http://www.foxtable.com/mobilehelp/topics/0161.htm

Dim url As String = "https://api.weixin.qq.com/tcb/uploadfile?access_token={0}"
Dim txtInfo As WinForm.TextBox = e.Form.Controls("txtInfo")
Dim hc As New HttpClient(CExp(url, Functions.Execute("GetAccessToken")))
Dim jo As New JObject()
jo("env") = "rainkeji_e0jcd3239b6"
jo("path") = "云存储空间路径"
hc.Content = jo.ToString()
jo = JObject.Parse(hc.GetData)

hc = New HttpClient(jo("url").ToString())
hc.FormData.Add("key","云存储空间路径")
hc.FormData.Add("Signature",jo("authorization").ToString())
hc.FormData.Add("x-cos-security-token",jo("token").ToString())
hc.FormData.Add("x-cos-meta-fileid",jo("cos_file_id").ToString())
hc
.Files.Add("file","D:/WorkStation/3232.pdf")
Dim ret As String = hc.getData()
msgbox(ret)

 回到顶部
帅哥哟,离线,有人找我吗?
lemonkashi
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:215 积分:1682 威望:0 精华:0 注册:2017/9/26 13:40:00
  发帖心情 Post By:2021/7/19 10:52:00 [只看该作者]

老师好:

服务器 返回的 是  远程服务器返回错误: (403) 已禁止。

是不是因为 hc.Files.Add("file","D:/WorkStation/3232.pdf") 传的不是本地文件的二进制数据啊


谢谢

 回到顶部
帅哥哟,离线,有人找我吗?
lemonkashi
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:215 积分:1682 威望:0 精华:0 注册:2017/9/26 13:40:00
  发帖心情 Post By:2021/7/19 10:53:00 [只看该作者]

用户获取到返回数据后,需拼装一个 HTTP POST 请求,其中 url 为返回包的 url 字段,Body 部分格式为 multipart/form-data,具体内容如下:

keyvalue说明
keythis/is/a/example/file.path请求包中的 path 字段
Signatureq-sign-algorithm=sha1&q-ak=AKID9...返回数据的 authorization 字段
x-cos-security-tokenCukha70zkXIBqkh1Oh...返回数据的 token 字段
x-cos-meta-fileidHDze32/qZENCwWi5...返回数据的 cos_file_id 字段
file文件内容文件的二进制内容

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111414 积分:567140 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/7/19 11:11:00 [只看该作者]

hc.Files.Add方法会自己转换为二进制数据的

或者试试

hc = New HttpClient(jo("url").ToString())
hc.ContentType = "application/x-www-form-urlencoded"
hc.FormData.Add("key","云存储空间路径")
hc.FormData.Add("Signature",jo("authorization").ToString())
hc.FormData.Add("x-cos-security-token",jo("token").ToString())
hc.FormData.Add("x-cos-meta-fileid",jo("cos_file_id").ToString())
hc
.FormData.Add("file",System.IO.File.ReadAllBytes("D:/WorkStation/3232.pdf"))
Dim ret As String = hc.getData()
msgbox(ret)

 回到顶部
帅哥哟,离线,有人找我吗?
lemonkashi
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:215 积分:1682 威望:0 精华:0 注册:2017/9/26 13:40:00
  发帖心情 Post By:2021/7/19 11:54:00 [只看该作者]

这个是报错截图
图片点击可在新窗口打开查看此主题相关图片如下:下载.png
图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
lemonkashi
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:215 积分:1682 威望:0 精华:0 注册:2017/9/26 13:40:00
  发帖心情 Post By:2021/7/19 13:25:00 [只看该作者]

已经解决了  谢谢了老师 

问题处在云存储路径前部 不应该加 /

 回到顶部
帅哥哟,离线,有人找我吗?
lemonkashi
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:215 积分:1682 威望:0 精华:0 注册:2017/9/26 13:40:00
  发帖心情 Post By:2021/7/19 13:28:00 [只看该作者]

贴出来吧  供大家参考  谢谢老师

Dim url As String = "https://api.weixin.qq.com/tcb/uploadfile?access_token={0}"
Dim hc As New HttpClient(CExp(url, Functions.Execute("GetAccessToken")))
Dim jo As New JObject()
jo("env") = "rainkeji_e0jcd3239b6"
jo("path") = "PDF/32321.pdf"
hc.Content = jo.ToString()
jo = JObject.Parse(hc.GetData)


hc = New HttpClient(jo("url").ToString())
hc.FormData.Add("key","PDF/32321.pdf")
hc.FormData.Add("Signature",jo("authorization").ToString())
hc.FormData.Add("x-cos-security-token",jo("token").ToString())
hc.FormData.Add("x-cos-meta-fileid",jo("cos_file_id").ToString())
hc.Files.Add("file","D:\PDF\32321.pdf")


 回到顶部