.netcore 文件上传转为base64位字符串

.netcore 文件上传转为base64位字符串.netcore 文件上传转为base64位字符串

大家好,又见面了,我是你们的朋友全栈君。

  .netcore文件上传Api接口,和正常的webForm提交类似,只是用postman测试接口时,记得给form表单命名,否则获取上传文件数量一直为0

  后端代码

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using MyApiCommon;

namespace MyApi.Controllers
{
    [Route("api/[controller]")]
    [ApiController]
    public class FileController : ControllerBase
    {

        [HttpPost]
        [Route("postfile")]
        public string UploadAsync()
        {
            try
            {
                var files = HttpContext.Request.Form.Files;
                if (files.Count < 0)
                    return "请上传文件";
                long fileSize = files.Sum(f => f.Length) / 1024;//由字节转为kb
                Stream fs = files[0].OpenReadStream();//将文件转为流
                return Base64Convert.FileToBase64(fs);

            }
            catch (Exception ex)
            {
                return ex.Message;
            }


        }
    }
}

using System;
using System.Collections.Generic;
using System.IO;
using System.Text;


namespace MyApiCommon
{
    public class Base64Convert
    {
        /// <summary>
        ///  文件转换成Base64字符串
        /// </summary>
        /// <param name="fs">文件流</param>
        /// <returns></returns>
        public static String FileToBase64(Stream  fs)
        {
            string strRet = null;

            try
            {
                if (fs == null) return null;
                byte[] bt = new byte[fs.Length];
                fs.Read(bt, 0, bt.Length);
                strRet = Convert.ToBase64String(bt);
                fs.Close();
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return strRet;
        }

        /// <summary>
        /// Base64字符串转换成文件
        /// </summary>
        /// <param name="strInput">base64字符串</param>
        /// <param name="fileName">保存文件的绝对路径</param>
        /// <returns></returns>
        public static bool Base64ToFileAndSave(string strInput, string fileName)
        {
            bool bTrue = false;

            try
            {
                byte[] buffer = Convert.FromBase64String(strInput);
                FileStream fs = new FileStream(fileName, FileMode.CreateNew);
                fs.Write(buffer, 0, buffer.Length);
                fs.Close();
                bTrue = true;
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return bTrue;
        }
    }
}

  使用postman测试上传

.netcore 文件上传转为base64位字符串

 

转载于:https://www.cnblogs.com/personblog/p/10963594.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/106791.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 十进制小数分数与二进制的转换

    十进制小数分数与二进制的转换十进制分数转换为二进制数使用短除法。例如将十进制分数11/28转换为二进制数,过程如下:1、首先将分子分母分别转换成二进制(11)10=(1011)2(28)10=(11100)22、使用短除,借位时是借2,商只能是0或1所以:11/28=1011/11100=0.01100100…十进制小数转换为二进制小数十进制数的整数位是二进制数的整数位,…

    2022年9月25日
    0
  • Android Studio StrictMode

    Android Studio StrictMode最近接手一个新项目,研究下代码,并学习其中一些好的地方。比如今天发现运行app以后会有log显示 StrictMode相关信息,通过查看代码,我发现在某Activity中使用了StrictMode的一些功能,老实说,StrictMode我在手机的开发者选项中有见到过,enable以后用过几分钟……尝鲜,但是代码里面从来没用过这个功能,从来没用过    他主要是检测线程&虚拟

    2022年5月1日
    42
  • 《C++面向对象程序设计》✍千处细节、万字总结(建议收藏)「建议收藏」

    《C++面向对象程序设计》✍千处细节、万字总结(建议收藏)「建议收藏」《C++面向对象程序设计》✍千处细节、万字总结文章目录《C++面向对象程序设计》✍千处细节、万字总结一、面向对象程序设计二、C++基础2.1C++的产生和特点2.2一个简单的C++示例程序2.3C++在非面向对象方面对C语言的扩充输入和输出cinconst修饰符void型指针内联函数带有默认参数值的函数函数重载作用域标识符”::”强制类型转换new和delete运算符引用三、类和对象(一)3.1类的构成3.2成员函数的定义3.3对象的定义和使用3.4构造函数与析构函数构造函数成员初始化列表

    2022年6月22日
    20
  • jQuery遍历函数

    jQuery遍历函数

    2022年1月22日
    34
  • 激活成功教程quartus ii13.0_quartus ii 13.0安装

    激活成功教程quartus ii13.0_quartus ii 13.0安装文章目录一、QuartusII的下载二、QuartusII的安装三、QuartusII的激活成功教程1.下载激活成功教程器文件2.激活成功教程器的使用一、QuartusII的下载百度网盘下载链接:https://pan.baidu.com/s/1a9d-bq9RZmWrRV542X4IEA提取码:ifte说明:本链接来自于正点原子官方资料下载二、QuartusII的安装解压后双击运行exe文件:点击next:勾选“Iaccepttheagreement”,然后点击Next:

    2022年10月10日
    0
  • iPhone 检测 iPhone X 设备的几种方式和分辨率终极指南[通俗易懂]

    本文是我们前两天发的两条小集的汇总,主要包括三部分:iPhone屏幕分辨率总结如何适配新的iPhoneX设备检测设备是否为iPhoneX/XS/XR的几种方式iPhone屏幕分辨率终极指南上周,苹果发布了三款新的iPhone设备,它们的屏幕数据分别如下:iPhoneXS:5.8英寸,375pt*812pt(@3x);iPhoneXR:6.1…

    2022年4月7日
    117

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号