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

netcore 上传文件到阿里云OSS问题_第1张图片

AliYunOSSHelper类:

namespace VOL.WebApi
{
    public class AliYunOSSHelper: IScopedDependency

    {
        private ILogger _logger;
        /// 
        /// 阿里云帮助类
        /// 
        /// 
        /// 
        public AliYunOSSHelper(ILogger logger)
        {

            _logger = logger;

        }
        public AliYunOSSHelper()
        {
        }
        /// 
        /// 阿里云上传底层方法,文件为IFormFile
        /// 
        /// 
        /// 
        /// 
        public async Task> AliYunUpLoad(List files/*, string name*/)
        {
            List ossfilesNameList = new List();
            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;
        }

    }
}

netcore 上传文件到阿里云OSS问题_第2张图片

启动项目注入:

services.AddScoped();

netcore 上传文件到阿里云OSS问题_第3张图片

接口:

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();
        / 
        / 构造函数
        / 
        / 
        //public AliyunStsController(AliYunOSSHelper oSSHelper)
        //{
        //    _oSSHelper = oSSHelper;
        //}
        /// 
        /// 通用的图片上传,支持多图片上传 
        /// 
        /// 
        /// 
        [HttpPost, Route("UploadPic"), AllowAnonymous]
        [DisableRequestSizeLimit]
        public async Task UploadPic(List files)
        {
            //15M
            var maxRequestLength = 1024 * 1024 * 15;
            List filesName = new List();
            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");
        }
    } 
}

netcore 上传文件到阿里云OSS问题_第4张图片上传报错:

netcore 上传文件到阿里云OSS问题_第5张图片

解决方案:

你可能感兴趣的:(阿里云,云计算)