zoukankan      html  css  js  c++  java
  • 阿里云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

  • 相关阅读:
    serial number
    python getopt
    python readline,seek
    linux scp
    jenkinsapi
    windows kill process
    python time
    python configparse
    解决某些.net不方便解决的问题,解决方法就是 DHTML
    (转)windows XP 系统服务“关闭”详细列表,释放N多内存,128也够用了!
  • 原文地址:https://www.cnblogs.com/huanglin101/p/6264442.html
Copyright © 2011-2022 走看看