【问题标题】:How and where shall I add bucket name ,object name,namespace in the code to upload data?我应该如何以及在哪里在代码中添加存储桶名称、对象名称、命名空间来上传数据?
【发布时间】:2018-08-02 02:20:26
【问题描述】:

我不知道应该在哪里添加存储桶名称、命名空间和对象名称等详细信息,以便使用 REST API 在 Oracle 云基础设施上上传数据。我写的代码没有提到这些细节,这就是为什么我不确定是否代码是否正确。 这是代码sn-p。

           var tenancyId = ConfigurationManager.AppSettings["BMCTenancyId"];
            var userId = ConfigurationManager.AppSettings["BMCUserId"];
            var fingerprint = ConfigurationManager.AppSettings["BMCFingerprint"];
            var privateKeyPath = ConfigurationManager.AppSettings["BMCPrivateKeyPath"];
            var privateKeyPassphrase = ConfigurationManager.AppSettings["BMCPrivateKeyPassphrase"];
            var bucket= ConfigurationManager.AppSettings["BMCBucket"];
            var Namespace= ConfigurationManager.AppSettings["BMCNamespacet"]; 

            var signer = new RequestSigner(tenancyId, userId, fingerprint, privateKeyPath, privateKeyPassphrase);

            ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

            var uri = new Uri($"https://objectstorage.us-phoenix-1.oraclecloud.com/");

            var request = (HttpWebRequest)WebRequest.Create(uri);
            request.Method = "POST";
            request.Accept = "application/json";
            request.SendChunked = true;
            request.ContentType = "text/plain";

            request.ContentLength =postdata.Length;

        try
        {

            using (var stream = request.GetRequestStream())
            {
                stream.Write(postdata, 0, postdata.Length);

            }
        }
        catch(Exception ex)
        {
            Response.Write("testing"+ex.Message+"Testing");

        }

            request.Headers["x-content-sha256"] = Convert.ToBase64String(SHA256.Create().ComputeHash(postdata));

            signer.SignRequest(request);

            Console.WriteLine($"Authorization header: {request.Headers["authorization"]}");

            ExecuteRequest(request);

            Console.WriteLine("The value of 'ContentLength' property after sending the data is {0}", request.ContentLength);
    }

        private static void ExecuteRequest(HttpWebRequest request)
        {
            try
            {
               var webResponse = (HttpWebResponse)request.GetResponse();
                var response = new StreamReader(webResponse.GetResponseStream()).ReadToEnd();
                Console.WriteLine($"Response: {response}");
            }
            catch (WebException e)
            {
                Console.WriteLine($"Exception occurred: {e.Message}");
                Console.WriteLine($"Response: {new StreamReader(e.Response.GetResponseStream()).ReadToEnd()}");
            }
        }

【问题讨论】:

    标签: oracle-cloud-infrastructure


    【解决方案1】:

    正如该操作提到的REST API docs,您需要将命名空间、存储桶和对象名称放在URI 中:

    var uri = new Uri("https://objectstorage.us-phoenix-1.oraclecloud.com/n/" + Namespace + "/b/" + bucket + "/o/" + objectName);
    

    【讨论】:

      猜你喜欢
      • 2013-07-24
      • 1970-01-01
      • 2010-11-13
      • 1970-01-01
      • 2015-07-13
      • 1970-01-01
      • 1970-01-01
      • 2015-07-20
      • 1970-01-01
      相关资源
      最近更新 更多