阿里 oss 文件上传

这次在做项目时,要求把上传的文件全部要上传到阿里云的oss里去,但是在做的时候由于前端使用了bootrap的fileinput,而fileinput使用二进制方式上传,所以找不到上传的本地路径,这花了些时间来弄,不废话了,直接上代码:

前端跳过

后端代码:

 using Aliyun.OSS;//没有这个,就去项目的nuget安装

 public static string _id { get; } = Common.Tool.ReadAppSitting("AppID"); //  <!-- OOS AppID -->
public static string _key { get; } = Common.Tool.ReadAppSitting("AppSercert"); //  <!-- OOSAppSercert -->
public static string _host { get; } = Common.Tool.ReadAppSitting("Host");  <!-- OOS地址 -->
 public static string _picUrl { get; } = Common.Tool.ReadAppSitting("PicUrl");  <!-- 图片二级域名-->

public static string _bucketName { get; } = Common.Tool.ReadAppSitting("bucketName");  <!-- OOS地址 bucketName-->

        public ActionResult UPloadToOOS_new()
        {
            string FolderPath = "StuUpFiles/"+ DateTime.Now.ToString("yyyyMMdd") + "/";
            var client = new OssClient(_host, _id, _key);//

            List<Models.UpFileInfo> upFileInfoList = new List<Models.UpFileInfo>();
            if (Request.Files.Count > 0)
            {
                for (int i = 0; i < Request.Files.Count; i++)
                {
                    try
                    {
                        HttpPostedFileBase fb = Request.Files[i];
                        Models.UpFileInfo ufi = new Models.UpFileInfo();
                        string fileName = fb.FileName; //得到上传的文件名
                        ufi.OldFileName = fb.FileName; // 得到上传的文件名,并记录
                        ufi.FileSize = fb.ContentLength;//文件大小
                        ufi.SourceUrl = _picUrl + "/" + FolderPath;// savepath.Substring(1);//保存路径
                        ufi.FileType = fb.ContentType;//文件类型
                        string[] sp = fileName.ToLower().Split('.');
                        string filenamelast = sp[sp.Length - 1];//后缀名
                        fileName = Guid.NewGuid().ToString("N");//重新生成文件名
                        fileName += "." + filenamelast;
                        ufi.NewFileName = fileName;//新文件名称
                        string FilePath = FolderPath + fileName;//新文件名称
                        string contentType = MimeMapping.GetMimeMapping(FilePath);//得到文件类型


                        /*重点在这里*/
                        var metadata = new ObjectMetadata();
                        metadata.ContentLength = fb.ContentLength;
                        if (FilePath.Contains(".woff"))
                        {
                            metadata.ContentType = "font/x-font-woff";
                        }
                        else if (FilePath.Contains(".svg") || FilePath.Contains(".html") || FilePath.Contains(".xml"))
                        {
                            metadata.ContentType = "text/html";
                        }
                        else
                        {
                            metadata.ContentType = contentType;
                        }
                        /*因为使用了二进制上传,没有路径 不加这句话,在下面会报一个超出范围的错误*/
                        fb.InputStream.Seek(0, SeekOrigin.Begin);//不加这句话,在下面会报一个超出范围的错误
                        PutObjectResult por = client.PutObject(_bucketName, FilePath, fb.InputStream, metadata);

                        /*重点在这里 end*/
                        if (por.HttpStatusCode==System.Net.HttpStatusCode.OK)
                        {
                            upFileInfoList.Add(ufi);
                        }                    
                    }
                    catch (Exception ex)
                    {
                        //return Content(ex.Message);
                        continue;
                    }
                }
            }
            return Content(upFileInfoList.ToJson());


        }




  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值