C#如何将IO.Stream保存到MemoryStream并保存到本地文件夹中的PDF文件

时间:2018-12-13 19:28:21

标签: c# pdf stream memorystream

我正在呼叫第三方服务,该服务通过IO.Stream返回pdf文件。我需要更改为MemoryStream,并保存为pdf文件。

2 个答案:

答案 0 :(得分:0)

您可以执行以下操作。

using (Stream stream = response.GetResponseStream()) 
using(MemoryStream memStream = new MemoryStream())
{
  memStream = new MemoryStream();
  stream.CopyTo(memoryStream);
  // TODO : Rest of your task
}

有关MSDN上Stream.CopyTo的更多详细信息

答案 1 :(得分:0)

cRequestString = ".....";//You need to set up you own URL here.  
            //Make the API call  
            try  
            {  
    byte[] bHeaderBytes = System.Text.Encoding.UTF8.GetBytes(GetUserPasswordString()); //user and pa for third party call.  
                    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(cRequestString);  
                request.Method = WebRequestMethods.Http.Get;  
                request.PreAuthenticate = true;  
                request.ContentType = "application/pdf";  
                request.Accept = "application/pdf";  
                request.Headers.Add("Authorization", "Basic " + Convert.ToBase64String(bHeaderBytes));  
                MemoryStream memStream;   
                WebResponse response = request.GetResponse();                 
                using (Stream stream = response.GetResponseStream())                   
                using (StreamReader reader = new StreamReader(stream))  
                {  
                    memStream = new MemoryStream();  
                    //read small blocks to show correctly  
                    byte[] buffer = new Byte[1023];  
                    int byteCount;  
                    do  
                    {  
                        byteCount = stream.Read(buffer, 0, buffer.Length);  
                        memStream.Write(buffer, 0, byteCount);  
                    } while (byteCount > 0);  
                }  
                memStream.Seek(0, SeekOrigin.Begin);//set position to beginning    
                return memStream;    
            }  
            catch  
            {  
                return null;  
            }  

//save MemoryStream to local pdf file  
 private void SavePDFFile(string cReportName, MemoryStream  pdfStream)  
        {  
            //Check file exists, delete  
            if (File.Exists(cReportName))  
            {  
                File.Delete(cReportName);  
            }  
            using (FileStream file = new FileStream(cReportName, FileMode.Create, FileAccess.Write))  
            {  
                byte[] bytes = new byte[pdfStream.Length];  
                pdfStream.Read(bytes, 0, (int)pdfStream.Length);  
                file.Write(bytes, 0, bytes.Length);  
                pdfStream.Close();  
            }  
        }