zoukankan      html  css  js  c++  java
  • 微信摇一摇上传图片素材

    /// <summary>
            /// 微信摇一摇上传图片素材 图片大小建议120px*120 px,限制不超过200 px *200 px,图片需为正方形。
            /// </summary>
            /// <param name="data">文件流</param>
            /// <param name="fileName">文件名</param>
            /// <returns></returns>
            public async Task<WxBaseResponse<UploadImgResponse>> UploadImg(byte[] data, string fileName)
            {
                var accessToken = await GetAccessToken();
                var url = $"{wxApi}/shakearound/material/add?access_token={accessToken}";
                // 设置参数
                string boundary = DateTime.Now.Ticks.ToString("X"); // 随机分隔线
                var content = new MultipartFormDataContent(boundary);
                content.Headers.Remove("Content-Type");
                content.Headers.TryAddWithoutValidation("Content-Type", "multipart/form-data; boundary=" + boundary);
                var contentByte = new ByteArrayContent(data);
                contentByte.Headers.Remove("Content-Disposition");
                contentByte.Headers.TryAddWithoutValidation("Content-Disposition", $"form-data; name="media";filename="{fileName}_2.png"" + "");
                contentByte.Headers.Remove("Content-Type");
                contentByte.Headers.TryAddWithoutValidation("Content-Type", "image/png");
                content.Add(contentByte);
                return await HttpClientHelper.PostFileAsync<WxBaseResponse<UploadImgResponse>>(url, content);
                //return await _httpApi.PostAsync<WxBaseResponse<UploadImgResponse>>(url, content);
            }
    public static async Task<T> PostFileAsync<T>(string url, HttpContent content)
            {
                using (var httpClient = new HttpClient())
                {
                    var uri = new Uri(url);
                    var resp = await httpClient.PostAsync(uri, content);
                    var jsonResult = Encoding.UTF8.GetString(await resp.Content.ReadAsByteArrayAsync());
                    return JsonConvert.DeserializeObject<T>(jsonResult);
                }
            }

    api,FormData上传调用:

    var count = Request.Form.Files.Count;
                if (count == 0 || count > 1)
                {
                    return Ok(ActionResponse.Fail(-1, "没有文件上传或者上传文件数大于1"));
                }
                var file = Request.Form.Files[0];
                var imgUrl = "";
                using (var br = new BinaryReader(file.OpenReadStream()))
                {
                    byte[] data = br.ReadBytes((int)file.OpenReadStream().Length);
                    var wxResponse = await _wxService.UploadImg(data, file.FileName);
                    if (wxResponse.IsSuccess)
                        imgUrl = wxResponse.Data.PicUrl;
                    else return Ok(ActionResponse.Fail(-1, $"上传文件出错:{wxResponse.Message},错误码:{wxResponse.Code}"));
                }
  • 相关阅读:
    MongoDB——(转)MongoDB 运维实战总结(转)
    MongoDB——4.4版本因果一致性会话
    架构——(转)用户中心 1亿数据 如何设计(转)
    MongoDB——命令备份
    JavaScript——JavaScript 弹窗
    git rebase
    shell脚本传参选项
    tftp 服务搭建
    gerrit搭建实现代码review
    Robot framework视频和教程分享
  • 原文地址:https://www.cnblogs.com/SmilePastaLi/p/12096289.html
Copyright © 2011-2022 走看看