zoukankan      html  css  js  c++  java
  • ASP.NET 将文件流写入临时文件,并打开

    今天遇到一个开发任务,需要调取第三方接口,接口返回Stream文件流(pdf文件),然后供用户打印。

    以下是源码:

     public void PrintOrderTestForpdf()
            {
                //1、创建实体
                PrintOrderInfo model = new PrintOrderInfo()
                {
                    ApiToken = "XXX",
                    LabelFormat = "A4_2",
                    OutPutFormat = "pdf",
                    PrintCustoms = false,
                    PrintProduct = false,
                    PrintProductFormat = "{sku}",
                    OrderList = new List<PrintOrderDetail>()
                    {
                        new PrintOrderDetail() { OrderId="123456",TrackingNo=""}
                    }
                };
                //2、请求接口,并接收返回的文件流
                MemoryStream bts = (MemoryStream)RuiYouPaiDal.Instance.PrintOrderForPdf(model);
                //3、将文件流写去临时的pdf文件,并打开
                Process.Start(GererateFileName(bts));
            }
     /// <summary>
            /// 将接收到的文件流写入临时文件
            /// </summary>
            /// <param name="result"></param>
            /// <returns></returns>
            public static string GererateFileName(MemoryStream result)
            {
                var filename = GetGeneratedFileName();//1、生成.pdf格式的临时文件
                var fs = new FileStream(filename, FileMode.OpenOrCreate);
                var w = new BinaryWriter(fs);
                w.Write(result.ToArray());//2、将接收到的文件流写入临时文件
                fs.Close();
                result.Close();
    
                return filename;
            }
            /// <summary>
            /// 生成临时文件
            /// </summary>
            /// <returns></returns>
            public static string GetGeneratedFileName()
            {
                var guid = Guid.NewGuid().ToString().Replace("-", "");
                var filepath = Path.Combine(Path.GetTempPath(), guid + ".pdf");
                return filepath;
            }

      文件流操作总是易忘,只能经常复习,经常总结了。。。。

  • 相关阅读:
    C#调用JS
    C#对象序列化(2)
    C#委托和事件(2)
    C#委托和事件(1)
    Windows Mobile Ping 命令实现
    操作 SQL Server Mobile 2005 数据库的常用 C# 代码
    Pocket PC 2003数据库操作
    C#委托和事件(3)
    C#中RSA加密解密和签名与验证的实现
    使用SqlBulkCopy数据导入和复制
  • 原文地址:https://www.cnblogs.com/czqbk/p/6566573.html
Copyright © 2011-2022 走看看