zoukankan      html  css  js  c++  java
  • Microsoft Azure Storage Explorer(2)

    
    

     之前写过一个往Microsoft Azure Storage Explorer里存储的功能,现在又要把东西给下载下来。

     记录一下:

     1  public string DownFileFromAzure()
     2         {
     3             StorageCredentials storageCredentials = new StorageCredentials(System.Configuration.ConfigurationManager.AppSettings["Blob_AccountName"].ToString(), System.Configuration.ConfigurationManager.AppSettings["Blob_AccountKey"].ToString());
     4             CloudStorageAccount storageAccount = new CloudStorageAccount(storageCredentials, "core.chinacloudapi.cn", true);
     5             CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
     6             CloudBlobContainer blobContainer = blobClient.GetContainerReference("acsh");//容器 
     7 
     8             CloudBlockBlob blockBlobs = blobContainer.GetBlockBlobReference("2019/7/1/131JS0E5201907000005");//除了外层的容器外的全路径
     9             string end=  blockBlobs.DownloadText();
    10             byte[] ensbyte = new byte[100000000];
    11             blockBlobs.DownloadToByteArray(ensbyte, 0);
    12             blockBlobs.DownloadToFile(@"E:DownFromAzureOpen", FileMode.OpenOrCreate);//直接下载到本地的文件
    13             //blockBlobs.Delete();
    14          
    15             return "";
    16         }

    2.然后,现在要把这个从Azure Blob中下载的文件以流的形式去转成pdf的样子下载出来。

                 MemoryStream stream = new MemoryStream();//声明一个流文件,用于接收DownloadToStream();
                stream.Seek(0,SeekOrigin.Begin);
                blockBlobs.DownloadToStream(stream);
                byte[] b = stream.ToArray();
                //string s = System.Text.Encoding.UTF8.GetString(b, 0, b.Length);
                //byte[] fileByte = Convert.FromBase64String(s);
                return b;
                //blockBlobs.Delete();   
    、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、

    SECURITY eCURITY = new SECURITY();
    byte[] fileByte = eCURITY.DownFileFromAzure();
    Response.Clear();
    Response.AddHeader("Content-Disposition", string.Format("attachment;filename={0}.pdf","Test"));
    Response.BinaryWrite(fileByte);
    Response.ContentType="application/pdf";
    Response.Flush();
    Response.End();
    return View();

    在这里一开始,就是遇到超时的情况:其实这个超时是要重写ReadTimeOut的方法,MemoryStream是继承Stream类的。

    但是这个length不为0,所以这个是从云上把文件给获取下来了。

     因为在前端获取是将byte文件转成流文件的。所以,我在上面的获取流文件的时候,直接将

    byte[] b = stream.ToArray();
    然后用前端接收下,就把pdf的文件给下载下来l。
  • 相关阅读:
    Install Postgresql on Ubuntu
    Pytest
    Pytest
    wrk 压力测试
    Objective-C 格式化字符串Format
    安装BeyondCompare on Ubuntu
    eclipse + python + pydev (Pydev安装成功确看不到插件的解决办法)
    如何解决: Ubuntu 系统 adb devices出现no permissions
    oracle rac搭建
    CentOS6.8编译安装LAMP
  • 原文地址:https://www.cnblogs.com/ZkbFighting/p/11122257.html
Copyright © 2011-2022 走看看