zoukankan      html  css  js  c++  java
  • 下载 ArcGIS Javascript 引用的字体 pbf 文件,并离线部署

    在使用 ArcGIS JavaScript 进行开发的时候,虽然已经把 引用的  js 和 css 文件进行了离线部署,

    但是有个问题,在调用的字体文件时,也就是调用 pbf 文件时,调用的仍然是在线的,而且速度很慢,

    整个页面加载的时间和加载 pbf 文件的时间差不多了,实在无法忍受,准备下载离线部署,网上搜了几个

    发现要么不支持中文,要么就是要分特别高。只能自己动手写个程序下载了。

    代码很简单,是 C# 的。

    using System;
    using System.IO;
    using System.Net;
    
    namespace pbfDownload
    {
        class Program
        {
            static void Main(string[] args)
            {
                var regularUrl = "https://static.arcgis.com/fonts/arial-unicode-ms-regular/";
                var boldUrl = "https://static.arcgis.com/fonts/arial-unicode-ms-bold/";
    
                var regularFolder = @"D:Fonts
    egularFolder"; //目录要先手动建好,这里主要是下载,就不循环路径自动建文件夹了。
                var boldFolder = @"D:FontsoldFolder";
    
                var NetURL = new string[2] { boldUrl, regularUrl };
    
                var downFolder = new string[2] {boldFolder,regularFolder};
    
                for (int u = 0; u < 2; u++)
                {
                    var downurl = NetURL[u];
    
                    var downFold = downFolder[u];
    
                    for (int i = 0; i < 257; i++)
                    {
                        double si = i * 256;
                        double ei = (i + 1) * 256 - 1;
    
                        var fileName = si.ToString() + "-" + ei.ToString() + ".pbf";
    
                        var fileUrl = downurl + fileName;
    
                        var fileDown = downFold + fileName;
    
                        HttpDownloadFile(fileUrl, fileDown);
                    }
    
                }
    
            }
    
            /// <summary>
            /// Http下载文件
            /// </summary>
            public static void HttpDownloadFile(string url, string path)
            {
                try
                {
                    // 设置参数
                    HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
                    //发送请求并获取相应回应数据
                    HttpWebResponse response = request.GetResponse() as HttpWebResponse;
                    //直到request.GetResponse()程序才开始向目标网页发送Post请求
                    Stream responseStream = response.GetResponseStream();
                    //创建本地文件写入流
                    Stream stream = new FileStream(path, FileMode.Create);
                    byte[] bArr = new byte[1024];
                    int size = responseStream.Read(bArr, 0, (int)bArr.Length);
                    while (size > 0)
                    {
                        stream.Write(bArr, 0, size);
                        size = responseStream.Read(bArr, 0, (int)bArr.Length);
                    }
                    request.Abort();
                    response.Close();
                    responseStream.Close();
                    stream.Close();
                    Console.WriteLine("File:" + path);
                }
                catch(Exception ex)
                {
                    Console.WriteLine("File:" + path);
                    Console.WriteLine("Error:"+ ex.Message);
                }
                
                //return path;
            }
        }
    }
  • 相关阅读:
    having——至少被订购过两回的订单
    产品——仓库表查询
    SQL 聚集函数使用
    select count(*)和select count(1)的区别 (转)
    SpringAOP 通知(advice)
    Spring AOP 实现原理与 CGLIB 应用
    cglib 动态代理基础篇
    模仿Struts2的Interceptor拦截器实现
    利用JDK动态代理机制实现简单拦截器
    java多线程总结二:后台线程(守护线程)
  • 原文地址:https://www.cnblogs.com/googlegis/p/12850443.html
Copyright © 2011-2022 走看看