阿里云OSS

Posted study_well_

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了阿里云OSS相关的知识,希望对你有一定的参考价值。

想将图片存储到阿里云上,尝试着了解了下阿里云的OSS。

文档地址:https://help.aliyun.com/?spm=5176.doc31837.201511181.1.TePvVX

.net 版本SDK 的github地址:https://github.com/aliyun/aliyun-oss-csharp-sdk?spm=5176.doc32085.2.4.kSjabk

贴个OSS开通的region 和endpoint 的图,地址:https://help.aliyun.com/document_detail/31837.html?spm=5176.2020520105.147.4.VZf3rn

我这属于华东,最开始是用hangzhou那个endpoint尝试获取上传文件 ,发现报错了,原来是我创建的bucket 选择了华东2,所以要用shanghai那个


OssClient client1 = new OssClient(endpoint2, accessKeyId, accessKeySecret); 
#region OSS文件操作

        /// <summary>
        /// 文件上传
        /// </summary>
        /// <param name="filename">文件的本地路径</param>
        /// <param name="keyname">存入OSS上的名字,后续用来获取图片地址用</param>
        /// <returns></returns>
        public PutObjectResult UploadFileToOSS(string filename, string keyname)
        {
            try
            {
                var reslut = client.PutObject(bucketname, keyname, filename);
                return reslut;
            }
            catch (Exception)
            {
                //MessageBox.Show("图片上传失败,文件名:"+filename+",keyname:"+keyname);
                throw new Exception("图片上传失败,文件名:" + filename + ",keyname:" + keyname);              
            }
        }
        /// <summary>
        /// 获取图片uri
        /// </summary>
        /// <param name="keyname">上传图片的keyname</param>
        /// <param name="process">需要对图片进行的操作,可空,eg:process = "image/resize,m_fixed,w_100,h_100"</param>
        /// <returns></returns>
        public string GetImgPath(string keyname, string process = null)
        {
            try
            {
                var req = new GeneratePresignedUriRequest(bucketname, key, SignHttpMethod.Get);

                if (!string.IsNullOrWhiteSpace(process))
                {
                    req.Process = process;
                    req.Expiration = DateTime.Now.AddSeconds(30 * 60);
                }

                // 产生带有签名的URI
                var uri = client.GeneratePresignedUri(req);
                return uri.ToString();
            }
            catch (Exception)
            {

                throw new Exception("图片获取失败,key:"+keyname);
            }
        }
        #endregion

  

其中 endpoint:就是上面访问文件的域名(可以试上面贴图中默认的也可以是自定义的)

key:是你上传文件后,访问该文件的名字。

 

由于我们的web段用的是.NET CORE 就研究了下JS 在浏览器段的上传,发现一定要进行签名才能上传成功,我不知道是不是哪里设置的不对,不过反正生产环境当中肯定得用签名的,所以就没去深究了。

浏览器端的上传我测试了两种,直接表单submit,还有就是ajax,都成功了,官方还给出了个使用插件上传的,那个方便就用哪个

贴个小demo,有winform的也有JS 浏览器上传文件的:https://github.com/huanglin101/ALiYunOSSDemo.git

 

以上是关于阿里云OSS的主要内容,如果未能解决你的问题,请参考以下文章

网站附件转移到阿里云oss,怎么设置附件路径

阿里云OSS的java实现生成url签名的代码示例吗

有谁使用过阿里云oss的吗?多文件多图时怎么上传

阿里云OSS的java实现生成url签名的代码示例吗

springboot阿里云oss工具类

上传指定url文件到阿里云oss