找回密码
 立即注册

QQ登录

只需一步,快速开始

诗仙·1957
金牌服务用户   /  发表于:2023-3-22 17:00  /   查看:1902  /  回复:7
1金币
如用apipost软件测试成功




红框出file选一个本地文件,

如果要在活字格中该怎么发呢???

附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册

最佳答案

查看完整内容

webapi 写失败了,那对于新手的我来说只剩下shell脚本处理了 #!/bin/bash # 获取传入的参数 file_path=$1 access_token=$2 leibie=$3 # 执行curl命令,将返回结果存放到本地文本 curl -F media=@$file_path ""https://api.weixin.qq.com/cgi-bin/media/upload?access_token=$access_token\&type=$leibie"" > result.txt 然后在活字格调用程序命令,执行这个脚本,可执行程序参数 带上这3个参数 然后查看re ...

7 个回复

倒序浏览
最佳答案
最佳答案
诗仙·1957
金牌服务用户   /  发表于:2023-3-22 17:00:30
来自 7#
本帖最后由 诗仙·1957 于 2023-3-23 14:10 编辑
Lay.Li 发表于 2023-3-23 12:22
大佬,代码我们也不是很懂啊,不过看这个测试结果是404,应该是就没有请求到这个webapi。
目前还没有发送 ...

webapi 写失败了,那对于新手的我来说只剩下shell脚本处理了


#!/bin/bash

# 获取传入的参数
file_path=$1
access_token=$2
leibie=$3

# 执行curl命令,将返回结果存放到本地文本
curl -F media=@$file_path ""https://api.weixin.qq.com/cgi-bin/media/upload?access_token=$access_token\&type=$leibie"" > result.txt


然后在活字格调用程序命令,执行这个脚本,可执行程序参数  带上这3个参数  然后查看result,txt

成功

然后用文件到base64
再base64解码就得到结果了


其中有一个注意事项,&符号在crul中 属于特殊符号需要转义,用\
例如
curl -F media=@$file_path ""https://api.weixin.qq.com/cgi-bin/media/upload?access_token=$access_token\&type=$leibie"" > result.txt
中的/upload?access_token=$access_token\&type=$leibie""
在官方还没有开发出支持form-data的http插件,这个方式更简单,豪哥的插件 base64到文件  及base64解码 完成了shell脚本 http请求的返回结果数据交互


另外注意文件路径为:

/home/abc.jpg

不能是

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

评分

参与人数 2金币 +5 满意度 +5 收起 理由
xiaoQ + 5
Lay.Li + 5 赞一个!

查看全部评分

回复 使用道具 举报
Lay.Li悬赏达人认证 活字格认证
超级版主   /  发表于:2023-3-22 17:52:42
2#
大佬,这个发送http请求命令暂时还不支持发送文件类型的body哈,可以参考下方的帖子



8.0.3.0发送http请求 发送一个照片文件呢作为请求体
https://gcdn.grapecity.com.cn/fo ... 2&fromuid=64322
(出处: 葡萄城产品技术社区)


回复 使用道具 举报
吴小胖讲师达人认证 悬赏达人认证 活字格认证
金牌服务用户   /  发表于:2023-3-22 20:53:31
3#
如果是钉钉上传媒体文件的话,有大神已经开发了插件,可以直接使用~


【7.0.4.0】钉钉上传媒体文件
https://gcdn.grapecity.com.cn/fo ... 0&fromuid=66072
(出处: 葡萄城产品技术社区)


评分

参与人数 1金币 +5 收起 理由
Lay.Li + 5 赞一个!

查看全部评分

回复 使用道具 举报
Joe.xu讲师达人认证 悬赏达人认证 活字格认证
超级版主   /  发表于:2023-3-23 08:47:06
4#
一般发送文件的话,比较常见的方式有:
1.base64
把图片转成BASE64,然后在请求体中以json的形式发送
http post发送图片_Ackerman777的博客-CSDN博客_http post 图片
图片转base64不执行 - 活字格专区 - 求助中心 - 葡萄城产品技术社区 (grapecity.com.cn)

2.file
如果是想要在body中带上附件,需要通过webAPI方式来实现。您可以自己写一个webapi,在webapi中实现这样的请求,然后在活字格中调用这个webapi。
第四十七章 服务端编程 - 活字格V8帮助手册 - 葡萄城产品文档中心 (grapecity.com.cn)
Http Body 的四种格式_OnebyWang的博客-CSDN博客_http的body
C#中HttpWebRequest的用法详解(转载) - PowerCoder - 博客园 (cnblogs.com)

3.图片URL
把附件传到云上,例如阿里OSS或者腾讯云COS,然后在请求中发送图片地址
回复 使用道具 举报
诗仙·1957
金牌服务用户   /  发表于:2023-3-23 10:15:54
5#
本帖最后由 诗仙·1957 于 2023-3-23 10:17 编辑
Joe.xu 发表于 2023-3-23 08:47
一般发送文件的话,比较常见的方式有:
1.base64
把图片转成BASE64,然后在请求体中以json的形式发送

我用机器人制造了这样一段c#


using GrapeCity.Forguncy.ServerApi;
using Microsoft.AspNetCore.Http;
using System.Security.Cryptography;
using System.Text;
using System;
using System.Threading.Tasks;
using System.IO;
using System.Net;
using System.Reflection.Metadata;
using System.Xml.Linq;

namespace wxapi
{
    public class wxapi : ForguncyApi
    {
        [Post]
        public async Task wxsucai()
        {
            var form = await Context.Request.ReadFormAsync();
            var access_token = form["token"][0];
            var serverurl = form["serverurl"][0];
            var media_url = form["url"][0];

            // Create a new HTTP request
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(serverurl);
            request.Method = "POST";
            request.ContentType = "multipart/form-data; boundary=---------------------------" + DateTime.Now.Ticks.ToString("x");

            // Build the request body
            string boundary = "-----------------------------" + DateTime.Now.Ticks.ToString("x");
            byte[] boundaryBytes = Encoding.ASCII.GetBytes("\r\n--" + boundary + "\r\n");
            byte[] trailerBytes = Encoding.ASCII.GetBytes("\r\n--" + boundary + "--\r\n");
            byte[] access_tokenBytes = Encoding.UTF8.GetBytes("Content-Disposition: form-data; name=\"access_token\"\r\n\r\n" + access_token + "\r\n");
            byte[] mediaBytes = File.ReadAllBytes(media_url);
            byte[] mediaHeaderBytes = Encoding.UTF8.GetBytes("Content-Disposition: form-data; name=\"media\"; filename=\"" + Path.GetFileName(media_url) + "\"\r\nContent-Type: application/octet-stream\r\n\r\n");

            // Calculate the total request length
            long contentLength = boundaryBytes.Length + access_tokenBytes.Length + boundaryBytes.Length + mediaHeaderBytes.Length + mediaBytes.Length + trailerBytes.Length;

            // Set the content length header
            request.ContentLength = contentLength;

            // Write the request body
            using (Stream requestStream = request.GetRequestStream())
            {
                requestStream.Write(boundaryBytes, 0, boundaryBytes.Length);
                requestStream.Write(access_tokenBytes, 0, access_tokenBytes.Length);
                requestStream.Write(boundaryBytes, 0, boundaryBytes.Length);
                requestStream.Write(mediaHeaderBytes, 0, mediaHeaderBytes.Length);
                requestStream.Write(mediaBytes, 0, mediaBytes.Length);
                requestStream.Write(trailerBytes, 0, trailerBytes.Length);
            }

            // Send the request and get the response
            using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
            {
                // Handle the response
                Console.WriteLine("Response status code: " + response.StatusCode);
                using (Stream responseStream = response.GetResponseStream())
                {
                    StreamReader reader = new StreamReader(responseStream, Encoding.UTF8);
                    Console.WriteLine("Response body: " + reader.ReadToEnd());
                }
            }
        }
    }
}
从代码上看,没多大毛病
但测试结果如下


测试内容上,向这个webAPI发送的文件路径,中有2个下划线,这个文件的路径应该/home/aaa.jpg
还是http://abc.com/aaa.jpg
测试发送  http://abc.com/aaa.jpg返回信息也是这样。
微信公众号素材接口,有没有什么插件可用?



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
Lay.Li悬赏达人认证 活字格认证
超级版主   /  发表于:2023-3-23 12:22:09
6#
大佬,代码我们也不是很懂啊,不过看这个测试结果是404,应该是就没有请求到这个webapi。
目前还没有发送请求体为文件的请求插件哈,看看其他大佬们有没有什么好的方案没有
回复 使用道具 举报
Lay.Li悬赏达人认证 活字格认证
超级版主   /  发表于:2023-3-23 14:29:04
8#
大佬这linux玩的可太6了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部