netcore 上传文件到阿里云OSS问题

AliYunOSSHelper类:

namespace VOL.WebApi
{
    public class AliYunOSSHelper: IScopedDependency

    {
        private ILogger _logger;
        /// <summary>
        /// 阿里云帮助类
        /// </summary>
        /// <param name="logger"></param>
        /// <param name="configHelper"></param>
        public AliYunOSSHelper(ILogger<AliYunOSSHelper> logger)
        {

            _logger = logger;

        }
        public AliYunOSSHelper()
        {
        }
        /// <summary>
        /// 阿里云上传底层方法,文件为IFormFile
        /// </summary>
        /// <param name="shop_code"></param>
        /// <param name="files"></param>
        /// <returns></returns>
        public async Task<List<string>> AliYunUpLoad(List<IFormFile> files/*, string name*/)
        {
            List<string> ossfilesNameList = new List<string>();
            try
            {
                //阿里云oss相关参数,请自行补齐  oss-cn-shenzhen-internal.aliyuncs.com  aapi.oss-cn-shenzhen-internal.aliyuncs.com  
                //账户1
                //var endpoint = "https://oss-cn-beijing.aliyuncs.com";
                //var accessKeyId = "*";
                //var accessKeySecret = "*";
                //var bucket = "aapi";
                //var imageUrl = "https://*.oss-cn-beijing.aliyuncs.com";

                //账户2
                var endpoint = "http://oss-cn-beijing.aliyuncs.com";
                var accessKeyId = "*";
                var accessKeySecret = "*";
                var bucket = "cdn*";
                var imageUrl = "http://cdn*.oss-cn-beijing.aliyuncs.com";

                var write_client = new OssClient(endpoint, accessKeyId, accessKeySecret);
                var read_client = new OssClient(endpoint, accessKeyId, accessKeySecret);

                for (int i = 0; i < files.Count; i++)
                {
                    var file = files[i];
                    var fname = DateTime.Now.ToString("yyyyMMddHHmmssffffff") + i + Path.GetExtension(file.FileName);
                    using (var stream = file.OpenReadStream())
                    {
                        write_client.PutObject(bucket, fname, stream);
                    }
                    DateTime expiration = DateTime.Now.AddYears(20);
                    var url = read_client.GeneratePresignedUri(bucket, fname, expiration);
                    string urlstring = imageUrl + url.AbsolutePath;
                    ossfilesNameList.Add(urlstring);
                }

            }
            catch (Exception ex)
            {

                _logger.LogError(ex, "阿里云图片上传失败,ex=" + ex.Message);
                throw;
            }

            return ossfilesNameList;
        }

    }
}

启动项目注入:

services.AddScoped<AliYunOSSHelper>();

接口:

AliyunController

sing Aliyun.OSS;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using VOL.Core.Controllers.Basic;
using VOL.Service.IServices;
using VOL.Service.Services;

namespace VOL.WebApi.Controllers
{
    [ApiController]
    [Route("[controller]")]
    public class AliyunController : ControllerBase
    {
        public AliyunController()
        { }

        private readonly AliYunOSSHelper _oSSHelper=new AliYunOSSHelper();
        / <summary>
        / 构造函数
        / </summary>
        / <param name="projectAppService"></param>
        //public AliyunStsController(AliYunOSSHelper oSSHelper)
        //{
        //    _oSSHelper = oSSHelper;
        //}
        /// <summary>
        /// 通用的图片上传,支持多图片上传 
        /// </summary>
        /// <param name="files"></param>
        /// <returns></returns>
        [HttpPost, Route("UploadPic"), AllowAnonymous]
        [DisableRequestSizeLimit]
        public async Task<ActionResult> UploadPic(List<IFormFile> files)
        {
            //15M
            var maxRequestLength = 1024 * 1024 * 15;
            List<string> filesName = new List<string>();
            if (files.Count == 0)    
                return Content("NoFile"+files.Count+ filesName, "text/html");
            else
            {

                for (var i = 0; i < files.Count; i++)
                {
                    var file = files[i];
                    if (null == file || file.Length <= 0)
                        return Content("格式不正确!", "text/html");
                    if (file.Length > maxRequestLength)
                    {
                        return Content("文件大小超出限制!", "text/html");
                    }

                    var fname = DateTime.Now.ToString("yyyyMMddHHmmssffffff") + i + Path.GetExtension(file.FileName);

                   // if (!FileExtensionFun.CheckImageFileType(fname))
                    //{
                   //    return Content("上传的图片格式不正确", "text/html");
                    //}

                }
                filesName = await _oSSHelper.AliYunUpLoad(files);
            }
            return Content(string.Join(",", filesName), "text/html");
        }
    } 
}

上传报错:

解决方案:

  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jekc868

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值