Example #1
0
 public void downLoad(System.String filename)
 {
     //这里需要网络异常处理机制
     try
     {
         // 下载文件到流。OssObject 包含了文件的各种信息,如文件所在的存储空间、文件名、元信息以及一个输入流。
         System.String downloadFilename = this.config.getshotfilepath() + @"\" + filename;
         OssObject     obj = client.GetObject(bucketName, filename);
         using (System.IO.Stream requestStream = obj.Content)
         {
             byte[] buf = new byte[1024];
             var    fs  = System.IO.File.Open(downloadFilename, System.IO.FileMode.OpenOrCreate);
             var    len = 0;
             // 通过输入流将文件的内容读取到文件或者内存中。
             while ((len = requestStream.Read(buf, 0, 1024)) != 0)
             {
                 fs.Write(buf, 0, len);
             }
             fs.Close();
         }
     }
     catch (System.Exception ex)
     {
         throw new System.Exception("fail to download the file!");
     }
 }
Example #2
0
 private PutObjectCommand(IServiceClient client, Uri endpoint, ExecutionContext context,
                          IDeserializer <ServiceResponse, PutObjectResult> deserializer,
                          OssObject ossObject)
     : base(client, endpoint, context, deserializer)
 {
     _ossObject = ossObject;
 }
Example #3
0
 public static void DownLoadFile(string objectName, string filePath)
 {
     try
     {
         OssClient ossClient = new OssClient(endPoint, accessKeyId, accessKeySecret);
         OssObject obj       = ossClient.GetObject(bucketName, objectName);
         using (var requestStream = obj.Content)
         {
             byte[] buf = new byte[1024];
             var    fs  = File.Open(filePath, FileMode.OpenOrCreate);
             var    len = 0;
             while ((len = requestStream.Read(buf, 0, 1024)) != 0)
             {
                 fs.Write(buf, 0, len);
             }
             fs.Close();
         }
         Debug.Log("Download succeeded:" + objectName);
     }
     catch (OssException ex)
     {
         Debug.Log("Download failed:" + ex.Message);
     }
     catch (Exception ex)
     {
         Debug.Log("Download failed:" + ex.Message);
     }
 }
Example #4
0
 public void PictureHandle(string filePath, string savePath)
 {
     try
     {
         string           process          = "image/auto-orient,1/quality,q_90/bright,60/sharpen,100/blur,r_5,s_5/watermark,text_U0lLaeWtpumZog,size_40,shadow_100,x_10,y_10";
         GetObjectRequest getObjectRequest = new GetObjectRequest(Config.Bucket, filePath, process);
         OssObject        result           = client.GetObject(getObjectRequest);
         using (var resultStream = result.Content)
         {
             using (var fs = File.Open(savePath, FileMode.OpenOrCreate))
             {
                 int    length = (int)resultStream.Length;
                 byte[] bytes  = new byte[length];
                 do
                 {
                     length = resultStream.Read(bytes, 0, length);
                     fs.Write(bytes, 0, length);
                 } while (length != 0);
             }
         }
         Debug.Log("带有进度下载文件成功");
     }
     catch (OssException e)
     {
         Debug.Log("图片处理出错:" + e.Message);
     }
     catch (System.Exception e)
     {
         Debug.Log("图片处理出错:" + e.Message);
     }
 }
        public void GenerateUriWithProcessTest()
        {
            try
            {
                // put example image
                _ossClient.PutObject(_bucketName, _keyName, _localImageFile);

                // generate uri
                var req = new GeneratePresignedUriRequest(_bucketName, _keyName, SignHttpMethod.Get)
                {
                    Expiration = DateTime.Now.AddHours(1),
                    Process    = _process
                };
                var uri = _ossClient.GeneratePresignedUri(req);

                // get processed image
                OssObject ossObject = _ossClient.GetObject(uri);

                // put processed image
                Stream seekableStream = ConvertStreamToSeekable(ossObject.Content);
                _ossClient.PutObject(_bucketName, _processedKey, seekableStream);

                // get info of processed image
                var imgInfo = GetOssImageObjectInfo(_bucketName, _processedKey);

                // check processed result
                Assert.AreEqual(imgInfo, _imageInfo);
            }
            finally
            {
                _ossClient.DeleteObject(_bucketName, _keyName);
                _ossClient.DeleteObject(_bucketName, _processedKey);
            }
        }
        public void ImageProcessTest()
        {
            try
            {
                // put example image
                _ossClient.PutObject(_bucketName, _keyName, _localImageFile);

                // get processed image
                GetObjectRequest request   = new GetObjectRequest(_bucketName, _keyName, _process);
                OssObject        ossObject = _ossClient.GetObject(request);

                // put processed image
                Stream seekableStream = ConvertStreamToSeekable(ossObject.Content);
                _ossClient.PutObject(_bucketName, _processedKey, seekableStream);

                // get info of processed image
                var imgInfo = GetOssImageObjectInfo(_bucketName, _processedKey);

                // check processed result
                Assert.AreEqual(imgInfo, _imageInfo);
            }
            finally
            {
                _ossClient.DeleteObject(_bucketName, _keyName);
                _ossClient.DeleteObject(_bucketName, _processedKey);
            }
        }
 private void GetObjectSimple()
 {
     try
     {
         OssObject result = client.GetObject(Config.Bucket, FilePath);
         using (var resultStream = result.Content)
         {
             using (var fs = File.Open(SavePath, FileMode.OpenOrCreate))
             {
                 int    length = (int)resultStream.Length;
                 byte[] bytes  = new byte[length];
                 do
                 {
                     length = resultStream.Read(bytes, 0, length);
                     fs.Write(bytes, 0, length);
                 } while (length != 0);
             }
         }
     }
     catch (OssException e)
     {
         Debug.Log("简单文件下载出错:" + e);
     }
     catch (System.Exception e)
     {
         Debug.Log("简单文件下载出错:" + e);
     }
     finally
     {
         getThread.Abort();
         isGetSuccess = true;
     }
 }
 private void GetObjectProcess()
 {
     try
     {
         GetObjectRequest getObjectRequest = new GetObjectRequest(Config.Bucket, FilePath);
         getObjectRequest.StreamTransferProgress += StreamProcess;
         OssObject result = client.GetObject(getObjectRequest);
         using (var resultStream = result.Content)
         {
             using (var fs = File.Open(SavePath, FileMode.OpenOrCreate))
             {
                 int    length = (int)resultStream.Length;
                 byte[] bytes  = new byte[length];
                 do
                 {
                     length = resultStream.Read(bytes, 0, length);
                     fs.Write(bytes, 0, length);
                 } while (length != 0);
             }
         }
         Debug.Log("带有进度下载文件成功");
     }
     catch (OssException e)
     {
         Debug.Log("带有进度文件下载出错:" + e.Message);
     }
     catch (Exception e)
     {
         Debug.Log("带有进度文件下载出错:" + e.Message);
     }
     finally
     {
         getThread.Abort();
     }
 }
Example #9
0
        async Task downloadfile(FileModel fileModel, string fileName)
        {
            FileStream fs     = null;
            Stream     stream = null;

            try
            {
                fileModel.tokenSource = new System.Threading.CancellationTokenSource();
                OssObject obj = await folderListModel.downloadFile(fileModel.bucketName, fileModel.key, fileModel.callback, fileModel.tokenSource.Token);

                stream = obj.Content;
                fs     = new FileStream(fileName, FileMode.OpenOrCreate);
                await stream.CopyToAsync(fs);

                fs.Position = 0;
                fs.Flush();
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (fs != null)
                {
                    fs.Close();
                }

                if (stream != null)
                {
                    stream.Close();
                }
            }
        }
Example #10
0
    void GetObject(string file)
    {
        try
        {
            OssObject result = ossClient.GetObject(Config.Bucket, filePath);
            using (var resultStream = result.Content)
            {
                using (var fs = File.Open(savePath, FileMode.Create))
                {
                    int    length = (int)resultStream.Length;
                    byte[] bytes  = new byte[length];

                    do
                    {
                        length = resultStream.Read(bytes, 0, length);
                        fs.Write(bytes, 0, length);
                    } while (length != 0);
                    isOK = true;
                }
            }
        }
        catch (OssException e)
        {
            print("下载文件出错:" + e);
        }
        catch (Exception e)
        {
            print("下载文件出错:" + e);
        }
        finally
        {
            thread.Abort();
            this.GetObjectSuccessCallback = null;
        }
    }
Example #11
0
        internal Stream GetFileFromOSS(string accessKeyId, string accessKeySecret, string securityToken)
        {
            OssClient client = new OssClient(OssEndpoint, accessKeyId, accessKeySecret, securityToken);

            OssObject rt = client.GetObject(BucketName, _fileName);

            //OssException
            return(rt.Content);
        }
 public FileSystemOssObjectContext(
     string process,
     OssObject ossObject,
     IServiceProvider serviceProvider)
 {
     Process         = process;
     OssObject       = ossObject;
     ServiceProvider = serviceProvider;
 }
Example #13
0
        /// <summary>
        /// 下载
        /// </summary>
        /// <param name="fullFileName">文件名称</param>
        /// <returns></returns>
        public Stream Download(string fullFileName)
        {
            OssObject obj = _ossClient.GetObject(_bucketName, fullFileName);

            if (obj == null || obj.Content == null)
            {
                throw new FileNotFoundException();
            }
            return(obj.Content);
        }
Example #14
0
 private FileInfoModel ObjToModel(OssObject obj)
 {
     return(new FileInfoModel()
     {
         FileName = Path.GetFileName(obj.Key),
         Path = obj.Key,
         Isdir = obj.ContentLength == 0 && obj.Key.EndsWith("/"),
         Modification_time = obj.Metadata.LastModified.ToFileTimeUtc(),
         Size = obj.ContentLength
     });
 }
Example #15
0
        /// <summary>
        /// Create a <see cref="S3ToAzureTransferJob"/> representing a download-to-local-and-upload copy from one S3 object to Azure blob.
        /// </summary>
        /// <param name="sourceObject">S3 object used to create the job.</param>
        /// <returns>A job representing a download-to-local-and-upload copy from one S3 object to Azure blob.</returns>
        private static AliyunToAzureTransferJob CreateTransferJob(OssObjectSummary objectSummary)
        {
            // Download the source object to a temporary file
            GetObjectRequest getObjectRequest = new GetObjectRequest(PocConfig.SourceBucket, objectSummary.Key);



            using (OssObject ossObject = ossClient.GetObject(getObjectRequest))
            {
                string tempFile = Path.Combine(tempFolder, Guid.NewGuid().ToString());
                string md5;
                string sha256;
                string relativeName = PocUtil.GetRelativeName(ossObject.Key, PocConfig.SourceDir);

                // Check if the destination blob already exists.
                CloudBlobContainer container = azureClient.GetContainerReference(PocConfig.DestContainer);
                CloudBlockBlob     destBlob  = container.GetBlockBlobReference(PocUtil.GetFullName(relativeName, PocConfig.DestDir));

                try
                {
                    if (destBlob.Exists(PocConstant.DefaultBlobRequestOptions))
                    {
                        Console.WriteLine("Dest already exist {0}", destBlob.Uri.ToString());
                        pocManifest.AddFailed(relativeName, PocErrorString.DestAlreadyExist);
                        return(null);
                    }

                    PocUtil.DownloadOssObject2File(ossObject, tempFile, out md5, out sha256);
                }
                catch (Exception e)
                {
                    Console.Error.WriteLine("Fail to download from aliyun {0}. Error: {1}", objectSummary.Key, e.ToString());
                    pocManifest.AddFailed(relativeName, PocErrorString.DownloadFailed);
                    return(null);
                }

                if (!VerifyDownloadSHA(relativeName, sha256))
                {
                    Console.Error.WriteLine("Download content miss match {0}. SHA: {1}", objectSummary.Key, sha256);
                    pocManifest.AddFailed(relativeName, PocErrorString.DownloadContentMissMatch);
                    return(null);
                }

                AliyunToAzureTransferJob job = new AliyunToAzureTransferJob()
                {
                    Source     = tempFile,
                    Name       = relativeName,
                    ContentMD5 = md5,
                };

                return(job);
            }
        }
Example #16
0
        /// <summary>
        /// 下载文件
        /// </summary>
        /// <param name="DownloadPath">阿里云文件目录</param>
        /// <param name="fileSavePath">本地保存文件目录</param>
        public bool GetObject(string DownloadPath, string fileSavePath)
        {
            FileStream fs            = null;
            Stream     requestStream = null;

            try
            {
                Uri u = new Uri(GetOssPath() + DownloadPath);

                DirectoryInfo fil  = new DirectoryInfo(fileSavePath);
                string        path = fil.FullName.Replace(fil.Name, "");
                if (!Directory.Exists(path))
                {
                    Directory.CreateDirectory(path);
                }
                if (System.IO.File.Exists(fileSavePath))
                {
                    System.IO.File.Delete(fileSavePath);
                }

                OssObject obj = client.GetObject(u);
                using (requestStream = obj.Content)
                {
                    byte[] buf = new byte[1024];
                    fs = System.IO.File.Open(fileSavePath, FileMode.OpenOrCreate);
                    var len = 0;
                    while ((len = requestStream.Read(buf, 0, 1024)) != 0)
                    {
                        fs.Write(buf, 0, len);
                    }
                    fs.Dispose();
                    fs.Close();
                    requestStream.Dispose();
                    requestStream.Close();
                }
                return(true);
            }
            catch (Exception ex)
            {
                if (fs != null)
                {
                    fs.Dispose();
                    fs.Close();
                }
                if (requestStream != null)
                {
                    requestStream.Dispose();
                    requestStream.Close();
                }
                return(false);
            }
        }
Example #17
0
 public OssObject GetObject(string strEndPoint, string strAccessID, string strAccessKey, string strBucketName, string strFullName)
 {
     try
     {
         OssClient ossClient = new OssClient(strEndPoint, strAccessID, strAccessKey);
         OssObject ossObject = ossClient.GetObject(strBucketName, strFullName);
         return(ossObject);
     }
     catch
     {
         throw;
     }
 }
 public ActionResult DownloadOSSFile(string filename, string downloadName)
 {
     try
     {
         OssClient ossClient = new OssClient(endpoin, accessid, accessKey);
         OssObject file      = ossClient.GetObject("vgic", filename);
         downloadName = string.IsNullOrEmpty(downloadName) ? Path.GetFileName(filename) : downloadName;
         return(File(file.Content, "application/octet-stream", downloadName));
     }
     catch (Exception ex)
     {
         return(Content(ex.Message));
     }
 }
        public Stream GetOssFile(OssFileHandlerRequest req, IFcContext context)
        {
            if (req == null)
            {
                throw new ArgumentNullException(nameof(req));
            }
            if (context == null || context.Credentials == null)
            {
                throw new ArgumentNullException(nameof(context));
            }
            OssClient ossClient = new OssClient(req.Endpoint, context.Credentials.AccessKeyId, context.Credentials.AccessKeySecret, context.Credentials.SecurityToken);
            OssObject obj       = ossClient.GetObject(req.Bucket, req.Key);

            return(obj.Content);
        }
Example #20
0
        public OssObject GetObject(string strFullName)
        {
            try
            {
                ISettings settings  = SettingsFactory.GetSettings();
                OssClient ossClient = new OssClient(settings.EndPoint, settings.AccessID, settings.AccessKey);
                OssObject ossObject = ossClient.GetObject(settings.BucketName, strFullName);

                return(ossObject);
            }
            catch
            {
                throw;
            }
        }
Example #21
0
        public virtual async Task <OssObject> GetObjectAsync(GetOssObjectRequest request)
        {
            var ossClient = await CreateClientAsync();

            if (!BucketExists(ossClient, request.Bucket))
            {
                throw new BusinessException(code: OssManagementErrorCodes.ContainerNotFound);
                // throw new ContainerNotFoundException($"Can't not found container {request.Bucket} in aliyun blob storing");
            }

            var objectPath = GetBasePath(request.Path);
            var objectName = objectPath.IsNullOrWhiteSpace()
                ? request.Object
                : objectPath + request.Object;

            if (!ObjectExists(ossClient, request.Bucket, objectName))
            {
                throw new BusinessException(code: OssManagementErrorCodes.ObjectNotFound);
                // throw new ContainerNotFoundException($"Can't not found object {objectName} in container {request.Bucket} with aliyun blob storing");
            }

            var aliyunOssObjectRequest = new GetObjectRequest(request.Bucket, objectName, request.Process);
            var aliyunOssObject        = ossClient.GetObject(aliyunOssObjectRequest);
            var ossObject = new OssObject(
                !objectPath.IsNullOrWhiteSpace()
                    ? aliyunOssObject.Key.Replace(objectPath, "")
                    : aliyunOssObject.Key,
                request.Path,
                aliyunOssObject.Metadata.LastModified,
                aliyunOssObject.Metadata.ContentLength,
                aliyunOssObject.Metadata.LastModified,
                aliyunOssObject.Metadata.UserMetadata,
                aliyunOssObject.Key.EndsWith("/"))
            {
                FullName = aliyunOssObject.Key
            };

            if (aliyunOssObject.IsSetResponseStream())
            {
                var memoryStream = new MemoryStream();
                await aliyunOssObject.Content.CopyToAsync(memoryStream);

                memoryStream.Seek(0, SeekOrigin.Begin);
                ossObject.SetContent(memoryStream);
            }

            return(ossObject);
        }
Example #22
0
        public void PrivateDownloadFile(string LocalFileFullName, ProgressBar UIViewProg)
        {
            try
            {
                OssClient MyOSSClient = new OssClient(MyALiYunOSSOTSLogin.MyAccessID, MyALiYunOSSOTSLogin.MyAccessKey);
                OssObject MyOssObject = MyOSSClient.GetObject(MyALiYunOSSOTSLogin.MyBucketName, MyALiYunOSSOTSLogin.PrefixStr + MyALiYunOSSOTSLogin.FileKeyName);

                string MyFileLenghtStr     = MyOssObject.Metadata.UserMetadata["FileLength"];
                long   MyReceiveBytesCount = long.Parse(MyFileLenghtStr);//MyOssObject.Content.Length;
                if (UIViewProg != null)
                {
                    UIViewProg.Maximum = (int)MyReceiveBytesCount;//220 * 10000;//(int)MyReceiveBytesCount;
                }
                Stream MyResponseStream = MyOssObject.Content;
                Stream MySaveFileStream = new FileStream(LocalFileFullName, FileMode.Create);

                long   MyDownloadedByteLenght = 0;
                byte[] MyPreBuffer            = new byte[1024];
                int    MyReadHeadSize         = MyResponseStream.Read(MyPreBuffer, 0, (int)MyPreBuffer.Length);
                while (MyReadHeadSize > 0)
                {
                    MyDownloadedByteLenght = MyReadHeadSize + MyDownloadedByteLenght;
                    Application.DoEvents();
                    MySaveFileStream.Write(MyPreBuffer, 0, MyReadHeadSize);
                    if (UIViewProg != null)
                    {
                        UIViewProg.Value = (int)MyDownloadedByteLenght;
                    }
                    MyReadHeadSize = MyResponseStream.Read(MyPreBuffer, 0, (int)MyPreBuffer.Length);
                }

                UIViewProg.Value = UIViewProg.Maximum;
                MySaveFileStream.Close();
                MyResponseStream.Close();
                ResultMessageStr = "文件私读下载成功!";
            }
            catch (Exception InforExcep)
            {
                ResultMessageStr = "文件私读下载错误:" + InforExcep.Message;  //throw;
            }
        }
        private static string GetOssImageObjectInfo(string bucket, string key)
        {
            GetObjectRequest request   = new GetObjectRequest(_bucketName, _processedKey, "image/info");
            OssObject        ossObject = _ossClient.GetObject(request);

            StringBuilder builder = new StringBuilder();

            using (var requestStream = ossObject.Content)
            {
                byte[] buf = new byte[1024];
                var    len = 0;
                while ((len = requestStream.Read(buf, 0, 1024)) != 0)
                {
                    byte[] subBuf = new byte[len];
                    Buffer.BlockCopy(buf, 0, subBuf, 0, len);
                    builder.Append(Encoding.Default.GetString(subBuf));
                }
            }

            return(builder.ToString());
        }
Example #24
0
        /// <summary>
        /// 下载任务详情
        /// </summary>
        /// <param name="task"></param>
        /// <returns></returns>
        private object DownloadItem(OssTaskDO task)
        {
            //获取索引
            var p = DownloadReadAsync(task);

            if (p < 0)
            {
                return(null);
            }

            try
            {
                //阿里云下载
                var ossPath = CheckOssPath(task.DownloadOssPath + @"\" + task.DownloadOssName);
                GetObjectRequest request = new GetObjectRequest(aliyunOSSConfig.BucketName, ossPath);

                request.SetRange(p * task.DebrisSize,
                                 p + 1 >= task.DownloadDebrisTotalCount ? task.DownloadFileLength : (p + 1) * task.DebrisSize);

                if (p + 1 >= task.DownloadDebrisTotalCount)
                {
                    request.SetRange(p * task.DebrisSize, task.DownloadFileLength - 1);
                }

                //保存到磁盘
                OssObject result = client.GetObject(request);
                if (result.HttpStatusCode.ToString() != "OK" && result.HttpStatusCode.ToString() != "PartialContent")
                {
                    throw new Exception("Response NOT OK");
                }
                DownloadWriteAsync(task, result.Content, p);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.StackTrace);
                DownloadWriteReduction(task, p);
            }
            return(true);
        }
        public void PutObjectWithProcessTest()
        {
            IOss client = OssClientFactory.CreateOssClientEnableMD5(true);

            try
            {
                //just for code coverage
                using (Stream content = File.OpenRead(_localImageFile))
                {
                    var hashStream = new Common.Internal.MD5Stream(content, null, content.Length);
                    var putRequest = new PutObjectRequest(_bucketName, _keyName, hashStream);
                    putRequest.Process = _process;
                    client.PutObject(putRequest);
                }

                // get processed image
                GetObjectRequest request   = new GetObjectRequest(_bucketName, _keyName, _process);
                OssObject        ossObject = client.GetObject(request);

                // put processed image
                Stream seekableStream = ConvertStreamToSeekable(ossObject.Content);
                client.PutObject(_bucketName, _processedKey, seekableStream);

                // get info of processed image
                var imgInfo = GetOssImageObjectInfo(_bucketName, _processedKey);

                // check processed result
                Assert.AreEqual(imgInfo, _imageInfo);
            }
            catch (OssException e)
            {
                Assert.AreEqual(OssErrorCode.InvalidArgument, e.ErrorCode);
            }
            finally
            {
                _ossClient.DeleteObject(_bucketName, _keyName);
                _ossClient.DeleteObject(_bucketName, _processedKey);
            }
        }
Example #26
0
        public static void getObjectBySignedUrl2()
        {
            const string accessKeyId     = "<your access key id>";
            const string accessKeySecret = "<your access key secret>";
            const string endpoint        = "<valid host name>";

            const string bucketName = "<bucket name>";
            const string key        = "<object name>";

            OssClient client = new OssClient(endpoint, accessKeyId, accessKeySecret);

            try
            {
                var metadata = client.GetObjectMetadata(bucketName, key);
                var etag     = metadata.ETag;

                var req = new GeneratePresignedUriRequest(bucketName, key, SignHttpMethod.Get);
                // Generates url signature for accessing specified object.
                var uri = client.GeneratePresignedUri(req);

                Console.WriteLine(uri.ToString());

                OssObject ossObject = client.GetObject(uri);
                var       file      = File.Open("<file to hold object content>", FileMode.OpenOrCreate);
                Stream    stream    = ossObject.Content;
                byte[]    bytes     = new byte[stream.Length];
                stream.Read(bytes, 0, bytes.Length);
                file.Write(bytes, 0, bytes.Length);
            }
            catch (OssException ex)
            {
                Console.WriteLine("Failed with error code: {0}; Error info: {1}. \nRequestID:{2}\tHostID:{3}",
                                  ex.ErrorCode, ex.Message, ex.RequestId, ex.HostId);
            }
            catch (Exception ex)
            {
                Console.WriteLine("Failed with error info: {0}", ex.Message);
            }
        }
        public static void GetObjectBySignedUrlWithClient(string bucketName, string key)
        {
            try
            {
                var metadata = client.GetObjectMetadata(bucketName, key);
                var etag     = metadata.ETag;

                var req = new GeneratePresignedUriRequest(bucketName, key, SignHttpMethod.Get);
                // Generates url signature for accessing specified object.
                var uri = client.GeneratePresignedUri(req);

                OssObject ossObject = client.GetObject(uri);
                using (var file = File.Open("fileToSave", FileMode.OpenOrCreate))
                {
                    using (Stream stream = ossObject.Content)
                    {
                        int length = 4 * 1024;
                        var buf    = new byte[length];
                        do
                        {
                            length = stream.Read(buf, 0, length);
                            file.Write(buf, 0, length);
                        } while (length != 0);
                    }
                }

                Console.WriteLine("Get object by signatrue succeeded.");
            }
            catch (OssException ex)
            {
                Console.WriteLine("Failed with error code: {0}; Error info: {1}. \nRequestID:{2}\tHostID:{3}",
                                  ex.ErrorCode, ex.Message, ex.RequestId, ex.HostId);
            }
            catch (Exception ex)
            {
                Console.WriteLine("Failed with error info: {0}", ex.Message);
            }
        }
Example #28
0
        public static PutObjectCommand Create(IServiceClient client, Uri endpoint, ExecutionContext context,
                                              string bucketName, string key,
                                              Stream content, ObjectMetadata metadata)
        {
            OssUtils.CheckBucketName(bucketName);
            OssUtils.CheckObjectKey(key);

            if (content == null)
            {
                throw new ArgumentNullException("content");
            }

            var ossObject = new OssObject(key)
            {
                BucketName = bucketName,
                Content    = content,
                Metadata   = metadata ?? new ObjectMetadata()
            };

            return(new PutObjectCommand(client, endpoint, context,
                                        DeserializerFactory.GetFactory().CreatePutObjectReusltDeserializer(),
                                        ossObject));
        }
Example #29
0
        public static void DownloadOssObject2File(OssObject ossObject, string filePath, out string md5, out string sha256)
        {
            using (SHA256 sha256Hash = SHA256Managed.Create())
                using (MD5 md5Hash = MD5.Create())
                    using (FileStream fileStream = new FileStream(filePath, FileMode.Create, FileAccess.ReadWrite, FileShare.None))
                        using (Stream content = ossObject.Content)
                        {
                            byte[] buf    = new byte[1024];
                            int    length = 0;

                            while ((length = content.Read(buf, 0, 1024)) != 0)
                            {
                                md5Hash.TransformBlock(buf, 0, length, null, 0);
                                sha256Hash.TransformBlock(buf, 0, length, null, 0);
                                fileStream.Write(buf, 0, length);
                            }

                            md5Hash.TransformFinalBlock(new byte[0], 0, 0);
                            sha256Hash.TransformFinalBlock(new byte[0], 0, 0);
                            md5    = Convert.ToBase64String(md5Hash.Hash);
                            sha256 = BitConverter.ToString(sha256Hash.Hash).Replace("-", string.Empty).ToLower();
                        }
        }
Example #30
0
        public void _DownLoadFile(object value)
        {
            OssObject        ossobject = null;
            GetObjectRequest request   = null;
            ObjectMetadata   metadata;
            FileStream       fs = null;
            int  readline       = 0;          //当前读取的字节长度
            long countlength    = 0;          //已经读取的字节

            byte[] buffer = new byte[length]; //文件块

            string bucket = "", fileKey = "", targetPath = "";

            if (value is string[])
            {
                bucket     = ((string[])value)[0];
                fileKey    = ((string[])value)[1];
                targetPath = ((string[])value)[2];
            }
            else
            {
                return;
            }



            if (File.Exists(targetPath))
            {
                try
                {
                    File.Delete(targetPath);
                }
                catch (IOException ioEx) //文件正在使用中,不能删除。
                {
                    return;
                }
            }
            fs = new FileStream(targetPath, FileMode.Create);
            try
            {
                request   = new Aliyun.OpenServices.OpenStorageService.GetObjectRequest(bucket, fileKey);
                ossobject = client.GetObject(request);//获取文件流


                //获取需要下载文件的信息。
                metadata = client.GetObjectMetadata(bucket, fileKey);

                while ((readline = ossobject.Content.Read(buffer, 0, length)) > 0)
                {
                    fs.Write(buffer, 0, readline);
                    countlength += readline;
                    if (DownLoadProcessing != null)
                    {
                        DownLoadProcessing(Convert.ToDouble(countlength) / Convert.ToDouble(metadata.ContentLength));
                    }
                }
            }
            catch (Aliyun.OpenServices.ServiceException serviceEx) //下载过程中出现错误。
            {
            }
            finally
            {
                ossobject.Dispose();
                fs.Close();
            }
        }