首页 > 编程语言 >uniapp中微信小程序取微信头像并上传到.net core后端

uniapp中微信小程序取微信头像并上传到.net core后端

时间:2023-08-09 09:23:41浏览次数:40  
标签:uniapp 取微信 core imgFile extname var new filename data

uniapp中微信小程序取微信头像并上传到.net core后端 2023年08月09日 后端net7测试成功,先记下来,以后要用的时候直接来这复制粘贴 前端uniapp里的vue代码:  

<template>
    <view>
         
        <button class="avatar-wrapper" open-type="chooseAvatar" @chooseavatar="onChooseAvatar">
            取微信头像
        </button>
        <view>头像:{{face}}</view>
        <image :src="face" mode="aspectFit"></image>
 
    </view>
</template>

<script>
    export default {
        data() {
            return { 
                face: '', 
            }
        },
        methods: { 
            onChooseAvatar(e) {
                this.face = e.detail.avatarUrl;
                console.log("头像:" + this.face);
                var uploadurl =  "http://localhost:5049/wx/imgupload"
                uni.uploadFile({
                    url: uploadurl,
                    filePath: this.face,
                    name: 'file',
                    formData: {
                        'openid': '123456'
                    },
                    success: (uploadFileRes) => {
                        console.log(uploadFileRes.data);
                        if(uploadFileRes.data.code==0){
                            var fronturl = uploadFileRes.data.data.fronturl;
                            var src = uploadFileRes.data.data.src;
                            this.face = fronturl+src;
                        }
                    }
                });
            }
             
        }
    }
</script>

<style>
    button,
    input {
        border: 1px solid darkgray;

    }
</style>

  

后端NET7代码,用了WEB API:
using JCT.DAL;
using JCT.Model;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using SqlSugar.Extensions;

namespace JCT.Web.ApiController
{
    [Route("api/[controller]")]
    [ApiController]
    public class WXController : ControllerBase
    {
        //用于读取网站静态文件目录
        private Microsoft.AspNetCore.Hosting.IHostingEnvironment hostingEnv;

        public WXController(Microsoft.AspNetCore.Hosting.IHostingEnvironment hostingEnv)
        {
            this.hostingEnv = hostingEnv;
        }


        [HttpPost("ImgUpload")]
        public IActionResult ImgUpload([FromForm] string openid)
        {
            if (Request.Form.Files.Count == 0)
            {
                return new JsonResult(new { code = 1, msg = "文件为空。" });
            }
            var imgFile = Request.Form.Files[0];
            if (imgFile != null && !string.IsNullOrEmpty(imgFile.FileName))
            {
                long size = 0;
                string tempname = "";
                var filename = System.Net.Http.Headers.ContentDispositionHeaderValue
                                .Parse(imgFile.ContentDisposition)
                                .FileName
                                .Trim();
                var extname = filename.Substring(filename.LastIndexOf('.'), filename.Length - filename.LastIndexOf('.')); //扩展名,如.jpg

                extname = extname.Replace("\"", "");

                #region 判断后缀
                if (!extname.ToLower().Contains("jpg") && !extname.ToLower().Contains("png") && !extname.ToLower().Contains("gif")
                    && !extname.ToLower().Contains("jpeg"))
                {
                    return new JsonResult(new { code = 1, msg = "只允许上传jpg,png,gif格式的图片.", });
                }
                #endregion

                #region 判断大小
                long mb = imgFile.Length / 1024 / 1024; // MB
                if (mb > 5)
                {
                    return new JsonResult(new { code = 1, msg = "只允许上传小于 5MB 的图片.", });
                }
                #endregion

                var filename1 = System.Guid.NewGuid().ToString().Substring(0, 6) + extname;
                tempname = filename1;
                var path = hostingEnv.WebRootPath; //网站静态文件目录  wwwroot
                string dir = DateTime.Now.ToString("yyyyMMdd");
                //完整物理路径
                string wuli_path = path + $"{Path.DirectorySeparatorChar}upload{Path.DirectorySeparatorChar}{dir}{Path.DirectorySeparatorChar}";
                if (!System.IO.Directory.Exists(wuli_path))
                {
                    System.IO.Directory.CreateDirectory(wuli_path);
                }
                filename = wuli_path + filename1;
                size += imgFile.Length;
                using (FileStream fs = System.IO.File.Create(filename))
                {
                    imgFile.CopyTo(fs);
                    fs.Flush();
                }
                string fronturl = HttpContext.Request.Scheme + "://" + HttpContext.Request.Host.Host + ":" + HttpContext.Request.Host.Port;
                return new JsonResult(new
                {
                    code = 0,
                    msg = "上传成功",
                    data = new
                    {
                        fronturl = fronturl,
                        src = $"/upload/{dir}/{filename1}",
                        title = filename1
                    }
                });
            }
            return new JsonResult(new { code = 1, msg = "上传失败", });
        }


    }
}

  

   

标签:uniapp,取微信,core,imgFile,extname,var,new,filename,data
From: https://www.cnblogs.com/niunan/p/17615971.html

相关文章

  • .NET Core多线程 (2) 异步 - 上
    去年换工作时系统复习了一下.NETCore多线程相关专题,学习了一线码农老哥的《.NET5多线程编程实战》课程,我将复习的知识进行了总结形成本专题。本篇,我们来复习一下异步的相关知识点,预计阅读时间10分钟。理解异步的本质(1)异步是什么?举个例子,在高峰期去餐厅吃饭,会先排队拿个小票,......
  • .Net Core WebApi
    目录MiniMalAPiDemoProgram.csSwagger文档+信息Program.csAPI版本控制ApiVersion.csVersion1Controller.csProgram.cs生成注释解决跨域.Net后台请求封装返回数据压缩默认压缩Gzip压缩缓存接口缓存静态文件缓存MiniMalAPi最小的api,请求都写在Program.cs中,可以做微服务D......
  • ASP.NET Core 中的显示和编辑器模板
    显示模板和编辑器模板指定了自定义类型的用户界面布局。考虑下列 Address 模型:C#复制 publicclassAddress{publicintId{get;set;}publicstringFirstName{get;set;}=null!;publicstringMiddleName{get;set;}=null!;publicst......
  • C#/.NET/.NET Core优秀项目和框架每周精选(坑已挖,欢迎大家踊跃提交PR或者Issues中留言)
    思维导航前言项目地址项目分类(善用Ctrl+F)项目列表加入DotNetGuide技术交流群前言注意:排名不分先后,都是十分优秀的开源项目和框架,每周定期更新分享(欢迎关注公众号:追逐时光者,第一时间获取每周精选分享资讯......
  • 第五节:EF Core中的三类事务(SaveChanges、DbContextTransaction、TransactionScope)
    第五节:EFCore中的三类事务(SaveChanges、DbContextTransaction、TransactionScope)原文链接:https://blog.csdn.net/weixin_30954265/article/details/101542615?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2~default~CTRLIST~Rate-1-10154......
  • EF Core事务
    EFCore事务原文链接:https://blog.csdn.net/m0_47659279/article/details/119929767EFCore事务EFCore提供了SaveChange方法,可以把数据操作好之后再统一调用SaveChange方法,这样就实现了简单的事务功能如果需要多个SaveChange形成一个事务,就是说多个SaveChange要么全部成......
  • 【HMS Core】Health Kit 血压、血糖等数据返回数据包含max,min,avg,last 数据,这些数据
    ​【问题描述】1. 血压、血糖等数据返回数据包含max,min,avg,last数据,这些数据的含义是什么意思?​2. 如何获取用户上传健康数据的腕表的型号 【解决方案】1、血压原子采样统计数据类型开放的是多日统计查询接口,统计的维度是按照自然日进行统计的。​最大最小以及平均......
  • uniapp vuex用法详细讲解
    uni-app小程序项目三1.商品列表、过滤器、封装商品item组件、上拉加载、节流阀、下拉刷新、2.商品详情、轮播图、商品价格闪烁问题3.加入购物车、vuex、持久化存储、mixiins_小程序商品列表加载_Hyman-ya的博客-CSDN博客......
  • 【HMS Core】Health Kit 血压、血糖等数据返回数据包含max,min,avg,last 数据,这些数据
    【问题描述】1. 血压、血糖等数据返回数据包含max,min,avg,last数据,这些数据的含义是什么意思?2. 如何获取用户上传健康数据的腕表的型号【解决方案】1、血压原子采样统计数据类型开放的是多日统计查询接口,统计的维度是按照自然日进行统计的。最大最小以及平均值是指这一天的最大......
  • .net core 单文件发布,找不到appsettings.json的问题
    解决方案config.SetBasePath(GetBasePath());config.AddJsonFile("appsettings.json",false);privatestringGetBasePath(){usingvarprocessModule=Process.GetCurrentProcess().MainModule;returnPath.GetDirectoryName(processModule?.FileName......