zoukankan      html  css  js  c++  java
  • 生成PDF下载 HTTP或FTP远程获取PDF

    这个只是些代码片断。  备用。希望也能对大家有用。

    down.ashx.cs
    public void ProcessRequest(HttpContext context)
        
    {
          
    string title = sui.Title;
          
    string su = sui.SourceUrl;  //全文下载链接地址
          
          context.Response.Clear();
          context.Response.ContentType 
    = "application/pdf";
          context.Response.ContentEncoding 
    = Encoding.UTF8;
          context.Response.Charset 
    = "utf-8";
          context.Response.AddHeader(
    "Content-Disposition""attachment; filename=" +HttpUtility.UrlEncode(title+".pdf",Encoding.UTF8));
          
    if (su.Contains("ftp"))
          
    {
            
    string userName = "";
            
    string password = "";
            FtpDownload(context, su, userName, password);
          }

          
    else
          
    {        
            HttpDownload(context, su);
          }

        }


        
    private static void FtpDownload(HttpContext context, string fileUrl, string userName, string password)
        
    {
          
    try
          
    {
            
    byte[] result;
            
    byte[] buffer = new byte[4096];

            Uri filepath 
    = new Uri(fileUrl);

            FtpWebRequest reqFTP 
    = (FtpWebRequest)FtpWebRequest.Create(filepath);

            reqFTP.Method 
    = WebRequestMethods.Ftp.DownloadFile;

            reqFTP.UseBinary 
    = true;

            reqFTP.Credentials 
    = new NetworkCredential(userName, password);

            
    using (FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse())
            
    {
              
    using (Stream responseStream = response.GetResponseStream())
              
    {
                
    using (MemoryStream memoryStream = new MemoryStream())
                
    {
                  
    int count = 0;
                  
    do
                  
    {
                    count 
    = responseStream.Read(buffer, 0, buffer.Length);
                    memoryStream.Write(buffer, 
    0, count);

                  }
     while (count != 0);

                  result 
    = memoryStream.ToArray();

                  HttpContext.Current.Response.AddHeader(
    "Content-Length", result.Length.ToString());
                  memoryStream.WriteTo(context.Response.OutputStream);
                  memoryStream.Close();
                  context.Response.OutputStream.Flush();
                  context.Response.Flush();
                }

              }

            }

          }

          
    catch (Exception ex)
          
    {
            Exceptions.LogException(ex);
          }

        }


        
    private static void HttpDownload(HttpContext context, string httpUrl)
        
    {
          
    try
          
    {
            
    byte[] buffer = new byte[4096];

            HttpWebRequest reqHTTP 
    = (HttpWebRequest)WebRequest.Create(httpUrl);

            
    using (HttpWebResponse response = (HttpWebResponse)reqHTTP.GetResponse())
            
    {
              
    using (Stream responseStream = response.GetResponseStream())
              
    {
                
    using (MemoryStream memoryStream = new MemoryStream())
                
    {
                  
    int count = 0;
                  
    do
                  
    {
                    count 
    = responseStream.Read(buffer, 0, buffer.Length);
                    memoryStream.Write(buffer, 
    0, count);
                  }
     while (count != 0);

                  
    byte[] result = memoryStream.ToArray();
                  HttpContext.Current.Response.AddHeader(
    "Content-Length", result.Length.ToString());
                  memoryStream.WriteTo(context.Response.OutputStream);
                  memoryStream.Close();
                  context.Response.OutputStream.Flush();
                  context.Response.Flush();

                }

              }

            }

          }

          
    catch (Exception ex)
          
    {
            Exceptions.LogException(ex);
          }

        }



  • 相关阅读:
    有哪些带汉字的 LOGO 或者图标设计得很出色?
    从初级晋级高级UI设计师学习路线+全套视频
    UI常见面试题-整体素养篇
    PS精修电影胶片调色特效[附素材及方法]
    全链路UI、UE设计学习路线+视频教程完整版
    网页设计之栅格系统及应用
    移动端APP产品设计结构及专业术语
    九十分钟极速入门Linux——Linux Guide for Developments 学习笔记
    PAT树_层序遍历叶节点、中序建树后序输出、AVL树的根、二叉树路径存在性判定、奇妙的完全二叉搜索树、最小堆路径、文件路由
    数据结构第三部分:树与树的表示、二叉树及其遍历、二叉搜索树、平衡二叉树、堆、哈夫曼树、集合及其运算
  • 原文地址:https://www.cnblogs.com/ajaxleoxu/p/1089996.html
Copyright © 2011-2022 走看看