关闭

跨服务器下载文档资源

标签: C#文档
828人阅读 评论(0) 收藏 举报
分类:

        如何实现跨服务器下载文件呢?其实思路很简单,可以使用WebClient对象,将指定的文件从存储资源的服务器上下载一个副本到本地服务器,

再将本地的副本传输给请求的客户端。

下面上代码:

    /// <summary>
    /// 下载
    /// </summary>
    protected void DownLoadRecordFile()
    {
        //文件路径
        string strPath = ConfigurationManager.AppSettings["filesource"].ToString() + Request.QueryString["FleNm"];

        if (strPath.Length > 0)
        {
            string filename = strPath.Substring(strPath.LastIndexOf(@"/") + 1);
            Page.Response.Clear();
            ResFile(strPath, filename);
        }
        else
        {
            Response.Write("没有可下载的文件![<a href='javascript:window.close();'>关闭窗口</a>]");
        }
        Page.Response.End();
    }
    /// <summary>
    /// 下载文件
    /// </summary>
    /// <param name="path"></param>
    /// <param name="fileName"></param>
    private void ResFile(string path, string fileName)
    {
        System.Uri remoteUri = new Uri(path);
        //本地下载路径地址        
        string localurl = Server.MapPath("~/Document/" + fileName);
        System.Net.WebClient myWebClient = new System.Net.WebClient();
        FileInfo file = new FileInfo(localurl);
        try
        {
            //判断本地路径下是否已存在(已有人查看下载过)          
            if (!(File.Exists(file.ToString())))
            {                
                myWebClient.DownloadFileCompleted += (s, e) =>
                {
                    //以流形式将本地对远程的副本输出        
                    FileInfo fileinfo = new FileInfo(localurl);
                    Response.Clear();
                    Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8).Replace("+", "20%"));
                    Response.AddHeader("Content-Length", file.Length.ToString());
                    Response.ContentType = "application/octet-stream";
                    Response.WriteFile(file.FullName);
                    Response.Flush();
                    Response.End();
                };
                myWebClient.DownloadFileAsync(remoteUri, localurl);
            }
            else
            {
                //以流形式将本地对远程的副本输出        
                FileInfo fileinfo = new FileInfo(localurl);
                Response.Clear();
                Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8).Replace("+", "20%"));
                Response.AddHeader("Content-Length", file.Length.ToString());
                Response.ContentType = "application/octet-stream";
                Response.WriteFile(file.FullName);
                Response.Flush();
                Response.End();
            }
        }
        catch { }
    }



0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

Java FTP 实现跨服务器文件上传下载

Java FTP 实现跨服务器文件上传下载! 实现原理:服务器端安装 Serv-U 服务器,环境配置好后通过Java程序访问(读、写、删除等操作)目录。
  • FOR_CHINA2012
  • FOR_CHINA2012
  • 2013-11-19 13:53
  • 14133

【Unity3d】【项目学习心得】从资源服务器下载资源(二)

继上篇的基础准备 从资源服务器下载资源(一)  我们现在继续进一步完成 LoadManager 管理类。 管理类因为在全局中都是存在的,所以应该作为单例存在。 因为LoadManager 类是管...
  • mad2man
  • mad2man
  • 2014-10-29 11:39
  • 4437

【Unity3d】【项目学习心得】从资源服务器下载资源(一)

项目里面的许多资源都是从资源服务器加载的,这样子可以减小客户端的包大小。 所以我们需要一个专门的类来管理下载资源。 资源分很多类型,如:json表,txt文件,image文件,二进制文件,UIAtla...
  • mad2man
  • mad2man
  • 2014-10-29 10:12
  • 7952

网上下载资源的相关文档

1、判断下载文件是否完整当我们下载文件的时候,有时候会因为各种原因导致文件下载不够完整,此时就需要对下载的文件进行检测。利用HTTPURLConnection的getHeaderFild(“Conte...
  • ann4750G
  • ann4750G
  • 2015-10-20 14:58
  • 571

rim下载服务器上的资源

  • 2015-04-27 15:48
  • 9KB
  • 下载

Android多线程下载服务器资源

  • 2016-11-03 14:17
  • 371KB
  • 下载

迅雷离线下载及资源服务器IP(内涵说明文件)

  • 2010-09-03 11:28
  • 2KB
  • 下载

横瓜文件FTP下载资源搜索服务器V3.2

  • 2010-08-30 21:47
  • 3.32MB
  • 下载

3g应用-从指定的服务器上,下载资源如音乐,图片.文本等

  • 2011-03-23 19:36
  • 3KB
  • 下载

从服务器下载资源

  • 2017-06-21 09:45
  • 4KB
  • 下载
    个人资料
    • 访问:25597次
    • 积分:595
    • 等级:
    • 排名:千里之外
    • 原创:34篇
    • 转载:5篇
    • 译文:0篇
    • 评论:7条
    最新评论