物理路径,虚拟路径,物理路径与虚拟路径转换,文件下载方法

1 什么是物理路径?什么是虚拟路径?
(1) 例子:
  用IIS举个例子:   
  WEB服务目录是d:\路径   
  那么用HTTP访问网站根目录的时候,其实访问的是d:\路径,那么其中虚拟路径就是\(根),物理路径就是d:\路径 
 
(2) 我自己的理解:绝对路径一般都是带有磁盘完成路径, 而虚拟路径一般不带有磁盘

2 程序中虚拟路径和物理路径的转化

       #region 物理路径和相对路径的转换
        //本地路径转换成URL相对路径  
        private string urlconvertor(string imagesurl1)
        {
            string tmpRootDir = Server.MapPath(System.Web.HttpContext.Current.Request.ApplicationPath.ToString());//获取程序根目录
            string imagesurl2 = imagesurl1.Replace(tmpRootDir, ""); //转换成相对路径
            imagesurl2 = imagesurl2.Replace(@"\", @"/");
            //imagesurl2 = imagesurl2.Replace(@"Aspx_Uc/", @"");
            return imagesurl2;
        }
        //相对路径转换成服务器本地物理路径  
        private string urlconvertorlocal(string imagesurl1)
        {
            string tmpRootDir = Server.MapPath(System.Web.HttpContext.Current.Request.ApplicationPath.ToString());//获取程序根目录 
            string imagesurl2 = tmpRootDir + imagesurl1.Replace(@"/", @"\"); //转换成绝对路径 
            return imagesurl2;
        }
        #endregion

3 下载的方法

       /// <summary>
        /// 获取物理地址
        /// </summary>
        public static string MapPathFile(string FileName)
        {
            return HttpContext.Current.Server.MapPath(FileName);
        }
        /// <summary>
        /// 普通下载
        /// </summary>
        /// <param name="FileName">文件虚拟路径</param>
        public static bool DownLoadold(string FileName)
        {
            bool bools = false;
            string destFileName = MapPathFile(FileName);
            if (File.Exists(destFileName))
            {
                FileInfo fi = new FileInfo(destFileName);
                HttpContext.Current.Response.Clear();
                HttpContext.Current.Response.ClearHeaders();
                HttpContext.Current.Response.Buffer = false;
                HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(Path.GetFileName(destFileName), System.Text.Encoding.UTF8));
                HttpContext.Current.Response.AppendHeader("Content-Length", fi.Length.ToString());
                HttpContext.Current.Response.ContentType = "application/octet-stream";
                HttpContext.Current.Response.WriteFile(destFileName);
                HttpContext.Current.Response.Flush();
                HttpContext.Current.Response.End();
                bools = true;
            }
            return bools;
        }

        public static void ResponseFile(string path, HttpContext context)
        {
            context = HttpContext.Current;

            System.IO.Stream iStream = null;
            byte[] buffer = new Byte[10000];
            int length;
            long dataToRead;
            string filename = System.IO.Path.GetFileName(path);

            try
            {
                iStream = new System.IO.FileStream(path, System.IO.FileMode.Open, System.IO.FileAccess.Read, System.IO.FileShare.Read);
                dataToRead = iStream.Length;
                context.Response.ContentType = "application/octet-stream";
                context.Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(filename, System.Text.Encoding.UTF8));

                while (dataToRead > 0)
                {
                    if (context.Response.IsClientConnected)
                    {
                        length = iStream.Read(buffer, 0, 10000);
                        context.Response.OutputStream.Write(buffer, 0, length);
                        context.Response.Flush();

                        buffer = new Byte[10000];
                        dataToRead = dataToRead - length;
                    }
                    else
                    {
                        dataToRead = -1;
                    }
                }
            }
            catch (Exception ex)
            {
                context.Response.Write(ex.Message);
            }
            finally
            {
                if (iStream != null)
                {
                    iStream.Close();
                }
            }
        }

        public static void ResponseFile(string path, string fileName, HttpContext context)
        {
            context = HttpContext.Current;

            System.IO.Stream iStream = null;
            byte[] buffer = new Byte[10000];
            int length;
            long dataToRead;

            try
            {
                iStream = new System.IO.FileStream(path, System.IO.FileMode.Open, System.IO.FileAccess.Read, System.IO.FileShare.Read);
                dataToRead = iStream.Length;
                context.Response.ContentType = "application/octet-stream";
                context.Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8));

                while (dataToRead > 0)
                {
                    if (context.Response.IsClientConnected)
                    {
                        length = iStream.Read(buffer, 0, 10000);
                        context.Response.OutputStream.Write(buffer, 0, length);
                        context.Response.Flush();

                        buffer = new Byte[10000];
                        dataToRead = dataToRead - length;
                    }
                    else
                    {
                        dataToRead = -1;
                    }
                }
            }
            catch (Exception ex)
            {
                context.Response.Write(ex.Message);
            }
            finally
            {
                if (iStream != null)
                {
                    iStream.Close();
                }
            }
        }

转载于:https://www.cnblogs.com/fuqiang88/p/5069251.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
机器人智慧工厂虚拟仿真技术 作者:金自力 摘要:该文主要介绍机器人智慧工厂虚拟仿真技术,首先介绍该项技术的关键技 术点,然后介绍该项技术主要解决智慧工厂以下两方面的问题:即以机器人为主 体的智慧工厂从细胞单元到生产线, 从售前方案环节到交付实施过程中的虚拟样 机验证,以及提供离线编程底层的仿真数字化环境。 1.前言 虚拟仿真(Virtual Simulation)是智能制造领域的一门新兴技术,该技术在 计算机上通过 CAD/CAM/CAE 等技术将产品信息集成到计算机提供的可视化虚 拟环境,在实际产品制造之前实现产品的仿真、分析与优化过程。 机器人智慧工厂虚拟仿真是智能制造的重要环节,可应用于生产线节拍控制分 析、机器人运动控制、动力学分析、轨迹和路径规划离线编程、机器人与工作环 境的相互作用等方面。随着目前智能数字化制造及工业 4.0 等先进制造技术的发 展,机器人智慧工厂虚拟仿真也成为围绕产品生命周期管理(PLM)的整个数字化 设计、验证及制造环境的重要组成部分。研究与开发机器人智慧工厂虚拟仿真系 统,可以在虚拟环境中完成以上方面的研究工作,为机器人智能制造的发展提供 新的手段。 2.机器人智慧工厂虚拟仿真技术 机器人智慧工厂虚拟仿真技术涉及多个系统的运动学与动力学建模理论及 其技术实现,是基于数字和运动控制建模、仿真、信息管理、交互式用户界面和 虚拟现实的综合应用技术。 在智慧工厂设计的初级阶段——概念阶段就可以对整 个系统进行完整的分析,观察并实验各组件的相互运动情况。通过系统虚拟仿真 软件在相应虚拟环境中真实地模拟生产线的运动和节拍, 在计算机上可方便地修 改设计缺陷,仿真不同的布局方案,对生产线系统进行不断的改进,直至获得最 优的设计方案以后,再做出物理样机。 虚拟仿真的设计方法体现出并行工程的概念和思想, 是今后智能制造技术的 发展方向。与传统方法相比具有诸多优势,即在智慧工厂设计时期即确定关键的 参数,更新产品开发过程,缩短开发周期、降低成本和提高产品质量。 机器人智慧工厂虚拟仿真的关键技术包括以下方面: 1)系统集成性 机器人智慧工厂虚拟仿真解决方案涉及到多方面的技术, 虚拟仿真执行环境需要 在不同的系统间进行转换,其集成性包括以下方面: 导入在 CAD 中建立的机器人与生产线组件的三维模型, 加入机器人运动学与动 力学分析算法。 虚拟仿真中的流动节拍,机器人和外部轴的载荷速度,可达性等数据传递给分 析模组,轨迹和路径规划的拓扑数据传递给离线编程模组,处理后的分析结果回 传给虚拟仿真进行验证; 生产线 PLC,机器人下位机控制系统,IO 的信号等数据上传,与虚拟仿真系统 进行集成。 2)组件模型的参数化和数据库 通常一个智慧工厂的组件大约在 5 万到 10 万个(不含重复组件),大量重复使 用的模型可以参数化并形成组件库, 可以更快捷的变更组件和规划布局,大幅减少工程师 CAD 建模和增加运动算法 的时间。 3)可视化与交互性 机器人智慧工厂虚拟仿真系统提供了良好的模型显示环境, 使操作者有高真实性 的沉浸感。由于具有可视化方面的优势,在布局规划过程中工程师团队可交互式 探索智慧工厂的功能, 充分将自身的经验和能力结合到计算机的虚拟仿真的设计 过程中。 图 1 机器人生产线虚拟仿真软件 HedraCAM 3. 工业机器人的虚拟样机构建 机器人虚拟样机将机器人技术与虚拟仿真技术相结合, 针对于机器人设计与制造 过程中的运动学、动力学分析,轨迹和路径规划,机器人与工作环境的相互作用 等技术内容进行研究与系统开发,在虚拟环境中完成机器人的设计、分析及虚拟 生产过程的实现。系统的具体构成如下图 2。 CAD建模环境 机器人虚拟样机测试环境 各关节约束定义 初步设计三维 本体CAD模型 运动学、动力学控制建模 轨迹规划测试并输出到本体控制器 仿真结果对比分析 机器人虚拟样机 优化本体模型 系统优化,选择系统最佳解决方案 工业机器人虚拟样机 输出最终结果,形成机器人虚拟样机 机器人虚拟样机的核心功能是提供用于在计算机上进行机器人设计与开发的虚 拟环境,其主要功能有以下方面: 1)可视化环境 建立可视化环境是虚拟仿真系统的基础工作, 机器人的虚拟仿真可视化环境使得 操作者可直观、高效地在计算机上进行机器人的设计与开发,良好的环境可使操 作者方便地将自身经验和知识随时融入系统。 在虚拟仿真开发的不同阶段,机器人 CAD 模型在结构上有所不同。在虚拟样机 初期的概念性设计阶段,机器人 CAD 几何模型可能较为粗略,只为满足当前设 计需要,某些详细的几何结构可不必建模;在详细设计阶段,样机经过反复验证 与完善,系统得到优化后的几何数据,可对样机进行详细的几何建模,形成用于 仿真的机器人虚拟样机。 图 3 中电熊猫新款机器人 Pa

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值