记一次.net core调用微信云开发Http Api的uploadFile,上传文件到云环境的坑爹的排错过程

问题描述:使用微信云开发http api 上传文件,微信返回错误码400,结果格式是xml:

<?xml version='1.0' encoding='utf-8' ?> MalformedPOSTRequest The body of your POST request is not well-formed multipart/form-data. cos.ap-shanghai.myqcloud.com/6465-develop-0388d0-1258644315/test/test_1/userlist.csv NWRjMjg1OWFfZWFiYjFjMDlfMmI3NDdfY2M1NWQ4 OGVmYzZiMmQzYjA2OWNhODk0NTRkMTBiOWVmMDAxODc0OWRkZjk0ZDM1NmI1M2E2MTRlY2MzZDhmNmI5MWI1OTczMmZiNDZmZjBmNTVjMGU4NTViNDhhYWVjNzNkNzI4MzIyMTZjZTI0YWNhOTM4ZDlhNGM3NDA5MDQ1NjE3NTM=

过程和解决方法下文再表。

近一年来,想要弄个微信小游戏出来,但是苦于各种原因,总是断断续续,到现在还没有一个拿的出的作品。最近一段时间,看了微信云开发的相关文档,感觉有必要写个类库封装一下云Api,方便以后调用。于是就着手写了一个简单的调用库,过程中基本顺利。直到编写调用云存储,进行文件上传时,遇到了问题。而遍寻百度和谷歌,都没有找到相应的解决办法,所以想着把排错过程记录下来,以方便其他使用.net core 进行微信云开发的同学们进行讨论和参考。
笔者首先调用HTTP API的 uploadFile,成功的返回了数据,如图:
在这里插入图片描述
以下为微信官方的要求:
在这里插入图片描述
根据要求,代码实现如下(注意,下面这段代码不能正确上传,如果需要正确结果代码的,请拉到文末):

/// <summary>
/// 上传文件
/// </summary>
/// <param name="path">云路径</param>
/// <param name="fileBuff">二进制文件</param>
/// <returns></returns>
public BaseResult uploadFile(string path, byte[] fileBuff)
        {
   

            string resultContent = "";
            try
            {
   
                //获取文件上传链接和验证信息
                var uploadFilePathResult = getUploadFilePath(path);

                using (HttpClient client = new HttpClient())
                {
   
                    //client.BaseAddress = new Uri("http://localhost:52538/");
                    string boundary = "-----------" + DateTime.Now.Ticks.ToString("x");
                    var formContent = new MultipartFormDataContent(boundary);

                    formContent.Add(new StringContent(path), "\"key\"");
                    formContent.Add(new StringContent(uploadFilePathResult.authorization), "\"Signature\"");
                    formContent
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值