zoukankan      html  css  js  c++  java
  • webapi上次文件

    //控制器

    [HttpPost]
    [Route("image/uploads")]
    public async Task<string[]> Uploads()
    {
    // 检查是否是 multipart/form-data
    if (!Request.Content.IsMimeMultipartContent("form-data"))
    {
    throw new FileUploadException("请求的数据格式不正确");
    }
    var paths = await _uploader.Upload(Request.Content);
    if (!paths.Any())
    {
    throw new FileUploadException("上传失败");
    }
    return paths;
    }
    [HttpPost]
    [Route("image/uploadOss")]
    public async Task<string> UploadOss()
    {
    var httpRequest = HttpContext.Current.Request;
    // 检查是否是 multipart/form-data
    if (!Request.Content.IsMimeMultipartContent("form-data"))
    {
    throw new FileUploadException("请求的数据格式不正确");
    }
    var paths = await _uploader.PutObjectFromFile(httpRequest);

    if (!paths.Any())
    {
    throw new FileUploadException("上传失败");
    }
    return paths.First();
    }

    //api 接口

    public async Task<string[]> Upload(HttpContent content)
    {
    //文件存储地址
    string dirPath = BaseDirectory + RelativePath;
    if (!Directory.Exists(dirPath)) Directory.CreateDirectory(dirPath);

    // 采用MultipartMemoryStreamProvider
    var provider = new CustomMultipartFormDataStreamProvider(dirPath);
    try
    {
    // Read all contents of multipart message into CustomMultipartFormDataStreamProvider.
    await content.ReadAsMultipartAsync(provider);
    var savePaths = provider.FileData.Select(p => RelativePath + Path.GetFileName(p.LocalFileName)).ToArray();
    //对已保存的文件进行处理
    var resultPaths = FileHandler(savePaths).Select(p => ServerHost + p).ToArray();

    return resultPaths;
    }
    catch { return new string[] { }; }
    }

    /// <summary>
    /// 上传文件到阿里云oss
    /// </summary>
    /// <param name="content"></param>
    /// <returns></returns>
    public async Task<string[]> PutObjectFromFile(HttpRequest content)
    {
    try
    {
    var pahts = new List<string>();
    if (content.Files.Count <= 0) return pahts.ToArray();
    foreach (string file in content.Files)
    {
    var postedFile = content.Files[file];
    var path = RelativePath + DateTime.Now.ToString("yyyyMMddHHmmssfff")+"."+ postedFile.FileName.Split('.')[1];
    client.PutObject(BucketName, path, postedFile.InputStream);
    pahts.Add(Path.Combine("http://cczc-static.oss-cn-beijing.aliyuncs.com/", path));
    }
    return pahts.ToArray();
    }
    catch { return new string[] { }; }
    }

    //参数配置

    protected static readonly string BaseDirectory = AppDomain.CurrentDomain.BaseDirectory;
    protected static readonly string ServerHost = ConfigurationManager.AppSettings["ServerHost"];
    protected static readonly string BucketName = ConfigurationManager.AppSettings["BucketName"];

    /// <summary>
    /// 文件上传相对路径,子类可重写
    /// </summary>
    /// <returns></returns>
    protected virtual string RelativePath { get; } = $"upload/image/{DateTime.Today:yyyyMM/dd}/";

    protected static string Endpoint { get; } = “你的阿里云访问域名”

    protected static string AccessKeyId { get; } = AccessKeyId ;

    protected static string AccessKeySecret { get; } = AccessKeySecret;

    protected static OssClient client = new OssClient(Endpoint, AccessKeyId, AccessKeySecret);

  • 相关阅读:
    微信小程序加密解密 C# 以及 填充无效,无法被移除错误的解决方案 Padding is invalid and cannot be removed
    腾讯云 docker 镜像 dotnet/core sdk aspnet
    ImageMagick PDF到JPG有时会导致黑色背景
    VS2019 发布单文件
    MySQL 更新语句执行过程 WAL redolog binlog
    MySQL 查询语句执行过程
    让MySQL为我们记录执行流程
    SQL基础随记1 SQL分类 常用函数 ALL ANY EXISTS IN 约束
    初用MySQL Mysql示例库 Navicat15
    OldTrafford after 102 days
  • 原文地址:https://www.cnblogs.com/xlin/p/8269128.html
Copyright © 2011-2022 走看看