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!"); } }
private PutObjectCommand(IServiceClient client, Uri endpoint, ExecutionContext context, IDeserializer <ServiceResponse, PutObjectResult> deserializer, OssObject ossObject) : base(client, endpoint, context, deserializer) { _ossObject = ossObject; }
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); } }
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(); } }
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(); } } }
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; } }
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; }
/// <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); }
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 }); }
/// <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); } }
/// <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); } }
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); }
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; } }
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); }
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()); }
/// <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); } }
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); } }
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)); }
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(); } }
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(); } }