专栏首页yaphetsfangwebapi批量上传照片(三)(base64)

webapi批量上传照片(三)(base64)

public HttpResponseMessage AddVisitNew(HttpRequestMessage request, CustomerVisitAddNewModel model)
        {
            return CreateHttpPostResponse<long>(request, () =>
            {
                var res = customerVisitInfoService.AddVisitNew(model, CurrentUserId);
                if (string.IsNullOrEmpty(res.Error))
                {
                    // 上传拜访记录照片
                    string visitPath = null;
                    FtpClient ftpClient = new FtpClient(GlobalConst.FtpAddress, GlobalConst.Username, GlobalConst.Password);
                    string visitUploadDir = Path.Combine(GlobalConst.FILE_VISIT, "file");

                    for (var i = 0; i < model.VisitPic.Count; i++)
                    {
                        //获取base64编码的图片
                        HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"];

                        //获取文件储存路径
                        string path = context.Request.MapPath("~/"); //获取当前项目所在目录
                        string fName = "{0}".Fmt(DateTime.Now.ToString("yyyyMMddHHmmssfff")) + i;
                        string suffix = ".jpg"; 
                        string strPath = path + "App_Data/" + fName + suffix;
                        string newFileName = fName + suffix;

                        //获取图片并保存
                        Base64ToImg(model.VisitPic[i].Split(',')[1]).Save(strPath);
                        
                        //上传FTP
                        string uploadFilePath = Path.Combine(visitUploadDir, newFileName);
                        visitPath = ftpClient.UploadFile(strPath, uploadFilePath, true);
                        //FTP 转 HTTP
                        visitPath = "{0}".Fmt(UriHelper.GetAbsolutePath(visitPath));
                        
                        var pic = new VisitPiction
                        {
                            CustomerVisitInfoId = res.Data,
                            Createtime = DateTime.Now,
                            Path = visitPath
                        };
                        customerVisitInfoService.AddVisitPic(pic);
                    }
                    Logger.Info("visits/add customer: " + model.CustomerId + ", VisitStatus: " + model.VisitStatus + ", ReVisitPlanTime: " + model.ReVisitPlanTime + ", ExpenrienceTime: " + model.ExpenrienceTime);
                }
                return res;
            });
        }

        //解析base64编码获取图片
        private Bitmap Base64ToImg(string base64Code)
        {
            MemoryStream stream = new MemoryStream(Convert.FromBase64String(base64Code));
            return new Bitmap(stream);
        }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • C# base64 和图片互转

    yaphetsfang
  • StackExchange.Redis通用封装类分享

    首先是 ConnectionMultiplexer 的封装,ConnectionMultiplexer对象是StackExchange.Redis最中枢的对象。...

    yaphetsfang
  • 算法和数据结构: 八 平衡查找树之2-3树

    前面介绍了二叉查找树(Binary Search Tree),他对于大多数情况下的查找和插入在效率上来说是没有问题的,但是他在最差的情况下效率比较低。本文及后面...

    yaphetsfang
  • R语言教程之-线性回归

    回归分析是一种非常广泛使用的统计工具,用于建立两个变量之间的关系模型。 这些变量之一称为预测变量,其值通过实验收集。 另一个变量称为响应变量,其值从预测变量派生...

    统计学家
  • Beego Models之四模型定义

    使用orm定义,然后使用cmd方式,自动建表,不过在实际生产中还是直接使用sql操作的,这种模型定义在生产环境中定义的比较少,基本上都是直接使用基本类型,一些特...

    若与
  • 关于破坏环境的概率趋势:视频游戏玩家的知觉和行为研究(CS CY)

    当前,游戏是世界上最受欢迎的娱乐形式。各种研究表明,游戏如何影响玩家的观念和行为,从而为娱乐以外的目的带来了机遇。这项研究使用实时生活模拟游戏《动物之森:新地平...

    小童
  • hexo+github搭建博客(超级详细版,精细入微)

    你了解Hexo吗? Hexo是一个静态博客框架,基于Node.js,将Markdown文章通过渲染引擎,生成一个静态网页,再结合Git命令(ssh),Hexo ...

    YangAir
  • asp.net core封装layui组件示例分享

    用什么封装?这里只是用了TagHelper,是啥?自己瞅[文档](https://docs.microsoft.com/zh-cn/aspnet/core/mv...

    易墨
  • 3种方法,3幅图,1个gif,把它讲的明明白白

    Step 2 一个迭代步中,curNode 指向 preNode,便完成当前迭代步的反转

    double
  • 使用模拟近似乘子的深度学习训练(performance)

    本文通过仿真提出了如何利用近似乘子提高卷积神经网络(CNNs)的训练性能。与精确乘法器相比,近似乘法器在速度、功率和面积方面具有更好的性能。然而,近似乘数有一个...

    用户6869393

扫码关注云+社区

领取腾讯云代金券