【C#】默认打开图片、文件下载

news2024/10/5 16:19:37

系列文章

【C#】编号生成器(定义单号规则、固定字符、流水号、业务单号)
本文链接:https://blog.csdn.net/youcheng_ge/article/details/129129787

【C#】日期范围生成器(开始日期、结束日期)
本文链接:https://blog.csdn.net/youcheng_ge/article/details/129040663

【C#】组件化开发,调用dll组件方法
本文链接:https://blog.csdn.net/youcheng_ge/article/details/129492112

【C#】数据实体类使用
本文链接:https://blog.csdn.net/youcheng_ge/article/details/128816638

【C#】单据审批流方案
本文链接:https://blog.csdn.net/youcheng_ge/article/details/128972545

【C#】条码管理操作手册
本文链接:https://blog.csdn.net/youcheng_ge/article/details/126589496

【C#】IIS平台下,WebAPI发布及异常处理
本文链接:https://blog.csdn.net/youcheng_ge/article/details/126539836

【C#】代码模板生成工具
本文链接:https://blog.csdn.net/youcheng_ge/article/details/126890673

【C#】MySQL数据库导入工具(批量Excel插入)
本文链接:https://blog.csdn.net/youcheng_ge/article/details/126427323

【C#】简单二维码制作和打印工具
本文链接:https://blog.csdn.net/youcheng_ge/article/details/126884228

【C#】最全单据打印(打印模板、条形码&二维码、字体样式、项目源码)
本文链接:https://blog.csdn.net/youcheng_ge/article/details/129415723

【C#】Windows服务(Service)安装及启停方案
本文链接:https://blog.csdn.net/youcheng_ge/article/details/124053794

【C#】穿透Session隔离,服务调用外部程序(无窗体界面解决)
本文链接:https://blog.csdn.net/youcheng_ge/article/details/124053033

【C#】任务计划实现,使用Quartz类
本文链接:https://blog.csdn.net/youcheng_ge/article/details/123667723

【C#】源码解析正则表达式
本文链接:https://blog.csdn.net/youcheng_ge/article/details/118337074

【C#】软件版本和文件MD5记录(XML操作)
本文链接:https://blog.csdn.net/youcheng_ge/article/details/112513871

【C#】测试网络是否连通
本文链接:https://blog.csdn.net/youcheng_ge/article/details/110137288

【C#】根据名称获取编码(Dictionary获取key方法)
本文链接:https://blog.csdn.net/youcheng_ge/article/details/129816701

【C#】数据建模,你是使用DataTable还是List?
本文链接:https://blog.csdn.net/youcheng_ge/article/details/129792726

【C#】GridControl控件和数据集双向绑定
本文链接:https://blog.csdn.net/youcheng_ge/article/details/129423755

【C#】GridControl动态更换DataSource,数据查询异常处理
本文链接:https://blog.csdn.net/youcheng_ge/article/details/130305424

【C#】GridControl日期字段显示时分秒
本文链接:https://blog.csdn.net/youcheng_ge/article/details/130718303

【C#】GridControl增加选择列(不用二次点击)
本文链接:https://blog.csdn.net/youcheng_ge/article/details/130763713

【C#】数据库检查工具(可跨库访问)
本文链接:https://blog.csdn.net/youcheng_ge/article/details/97172329

【C#】代码解析–打印数据集
本文链接:https://blog.csdn.net/youcheng_ge/article/details/131431829

【C#】代码解析–截取整个方法函数
本文链接:https://blog.csdn.net/youcheng_ge/article/details/109817809

【C#】反射机制,动态加载类文件
本文链接:https://blog.csdn.net/youcheng_ge/article/details/131435110


文章目录

  • 系列文章
  • 前言
  • 一、问题描述
  • 二、解决方案
    • 2.1 可行性分析
    • 2.2 采用方案
  • 三、软件开发(源码)
    • 3.1 打开图片方法
    • 3.2 查看图片方法(调用方法)
    • 3.3 文件下载方法消息处理(net网络委托)
    • 3.4 文件下载方法
    • 3.5 文件下载调用方法
  • 四、项目展示
  • 五、资源链接


前言

我能抽象出整个世界,但是我不能抽象你。 想让你成为私有常量,这样外部函数就无法访问你。 又想让你成为全局常量,这样在我的整个生命周期都可以调用你。 可惜世上没有这样的常量,我也无法定义你,因为你在我心中是那么的具体。

哈喽大家好,本专栏为【项目实战】专栏,有别于【底层库】专栏,我们可以发现增加 了『问题描述』、『项目展示』章节,十分符合项目开发流程,让读者更加清楚项目解决的问题、以及产品能够达到的效果。本专栏收纳项目开发过程的解决方案,是我项目开发相对成熟、可靠方法的提炼,我将这些问题的解决思路梳理,撰写本文分享给大家,大家遇到类似问题,可按本文方案处理。

本专栏会持续更新,不断完善,专栏文章关联性较弱(文章之间依赖性较弱,没有阅读顺序)。大家有任何问题,可以私信我。如果您对本专栏感兴趣,欢迎关注吧,我将带你用最简洁的代码,实现复杂的功能。

·提示:本专栏为项目实战篇,未接触项目开发的同学可能理解困难,不推荐阅读。
3A0N000001


一、问题描述

我们已经确定了大致的方向,与业务部门沟通,进一步确定标签需要支持以下目标:
①公司存在保密要求,标签不便显示产品信息,但特定人员可以看懂。
②编号要可以人工复核,双重保障,防止识别不出可以人工干预。

二、解决方案

2.1 可行性分析

2.2 采用方案

三、软件开发(源码)

3.1 打开图片方法

 //函数内容: 函数方法,默认 打开图片
 //函数版本: 0.0.0.0
 //修改时间: 2023.07.11
 //============================================================================================
 //注意事项:
 //1.
 //2.
 //============================================================================================
 private void DefaultOpenImage(string filePathName)
 {
     //建立新的系统进程    
     System.Diagnostics.Process process = new System.Diagnostics.Process();

     //设置图片的真实路径和文件名    
     process.StartInfo.FileName = filePathName;

     //设置进程运行参数,这里以最大化窗口方法显示图片。    
     process.StartInfo.Arguments = "rundl132.exe C://WINDOWS//system32//shimgvw.dll,ImageView_Fullscreen";

     //此项为是否使用Shell执行程序,因系统默认为true,此项也可不设,但若设置必须为true    
     process.StartInfo.UseShellExecute = true;

     //此处可以更改进程所打开窗体的显示样式,可以不设    
     process.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
     process.Start();
     process.Close();
 }

3.2 查看图片方法(调用方法)

  //函数内容: 函数方法,查看图片
  //函数版本: 0.0.0.0
  //修改时间: 2023.07.11
  //============================================================================================
  //注意事项:
  //1.
  //2.
  //============================================================================================
  private void ShowImage(string str_FileAddress)
  {
      try
      {
          if (string.IsNullOrEmpty(str_FileAddress)
              || str_FileAddress == BaseConst.STRING_NULL)
          {
              MessageBox.Show("没有照片,可以查看!");
              return;
          }

          string str_FileName = Path.GetFileName(str_FileAddress);
          string str_TargetFile = Path.Combine(Str_DefaultDirectory, str_FileName);

          if (File.Exists(str_TargetFile))    //存在直接打开
          {
              DefaultOpenImage(str_TargetFile);
          }
          else    //不存在服务器下载
          {
              BaseSuperMessage SuperMsg = new BaseSuperMessage(通用消息.文件下载);
              SuperMsg.Append("File", str_FileAddress);
              BaseNetClient.SendSuperMessage(SuperMsg);
          }
      }
      catch (Exception ex)
      {
          BaseHMI.Display("样品数据 ShowImage", ex);
      }
  }

3.3 文件下载方法消息处理(net网络委托)

   //函数内容: 通用消息处理
   //函数版本: 0.0.0.0
   //修改时间: 2023.04.17
   //============================================================================================
   //注意事项:
   //1.
   //2.
   //============================================================================================
   public void BaseNetClient_SuperMessageAnalyzeAsClient_Event(object o)
   {
       try
       {
           //信息初始化
           ErrorMessage ErrMsg = new ErrorMessage();
           BaseSuperMessage SuperMsg = o as BaseSuperMessage;


           //根据消息种类分别处理
           switch (SuperMsg.SN)
           {

               case 通用消息.文件下载:

                   try
                   {

                       //显示 失败信息
                       if (SuperMsg.Data[0].Name == BaseConst.MESSAGE_FAIL)
                       {
                           ErrMsg.Message = SuperMsg.Data[0].Value;
                           BaseHMI.ShowWarn(ErrMsg);
                           break;
                       }

                       //返回数据
                       string str_File = SuperMsg.FileList[0];
                       string str_FileName = Path.GetFileName(str_File);
                       string str_TargetFile = Path.Combine(Str_DefaultDirectory, str_FileName);
                       if (!File.Exists(str_TargetFile))
                       {
                           File.Copy(str_File, str_TargetFile, true);
                       }

                       if (b_DefaultOpen)
                       {
                           DefaultOpenImage(str_TargetFile);
                       }
                   }
                   catch (System.Exception ex)
                   {
                       BaseHMI.Display("SN = " + 通用消息.文件下载.ToString() + " 文件下载请求应答处理", ex);
                       BaseHMI.ShowWarn("软件报错, 请通知管理员!");
                   }

                   break;

               default:
                   break;

           }

           //消息应答通用处理
           BaseNetClient.SendOver(SuperMsg);

           //记录消息
           BaseHMI.Display(BaseVal.MessageCaption, SuperMsg);

       }
       catch (System.Exception ex)
       {
           BaseHMI.Display("通用消息分析 BaseNetClient_SuperMessageAnalyzeAsClient_Event", ex);
       }
   }

3.4 文件下载方法

  //函数内容: 函数方法,文件下载
  //函数版本: 0.0.0.0
  //修改时间: 2023.07.11
  //============================================================================================
  //注意事项:
  //1.
  //2.
  //============================================================================================
  private void DownLoadFile(string str_FileAddress)
  {
      try
      {
          if (string.IsNullOrEmpty(str_FileAddress)
              || str_FileAddress == BaseConst.STRING_NULL)
          {
              MessageBox.Show("没有文件,可以下载!");
              return;
          }

          XtraFolderBrowserDialog ofd = new XtraFolderBrowserDialog();
          if (ofd.ShowDialog() == DialogResult.OK)
          {
              Str_DefaultDirectory = ofd.SelectedPath;
              //发送请求
              BaseSuperMessage SuperMsg = new BaseSuperMessage(通用消息.文件下载);
              SuperMsg.Append("File", str_FileAddress);
              BaseNetClient.SendSuperMessage(SuperMsg);
          }
      }
      catch (Exception ex)
      {
          BaseHMI.Display("样品数据 DownLoadFile", ex);
      }
  }

3.5 文件下载调用方法

  //函数内容:右键菜单,按钮,下载断口前样照片
  //函数版本: 0.0.0.1
  //修改时间: 2023.07.11
  //============================================================================================
  //注意事项
  //  1.  
  //  2.  
  //============================================================================================
  private void Mi_DownPhoto1_Click(object sender, EventArgs e)
  {
      DataRow dr_Material = BaseGridControl_SampleData.GridView_Main.GetFocusedDataRow();
      if (dr_Material != null)
      {
          string str_FileAddress = dr_Material[断口样检验数据表.断口前照片].ToString();
          b_DefaultOpen = false;
          DownLoadFile(str_FileAddress);
      }
  }

四、项目展示

启动服务端、启动客户端。
在这里插入图片描述
查看图片:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

五、资源链接

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/743254.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux(centos7)系统关闭 virbr0

背景: 在使用 VMware 虚拟机安装 centos7 操作系统中,经常出现将 IP 地址分配到虚拟网桥接口virbr0 上,引起虚拟机不能正常访问网络的问题。 我是在学习 docker 网络分析这块遇到的问题,教程上在虚拟机上输入 ip addr 并没有出现 …

linux开发工具:repo

1:repo简单介绍 repo是Google开发的用于管理Android版本库的一个工具,它是由一系列的Python脚本组成,封装了一系列的Git命令,用来统一管理多个Git仓库。repo不是用于取代git,而是简化了对多个Git版本库的管理。 repo…

6 种方式读取 Springboot 的配置(原理+实战)

从配置文件中获取属性应该是SpringBoot开发中最为常用的功能之一,但就是这么常用的功能,仍然有很多开发者在这个方面踩坑。 我整理了几种获取配置属性的方式,目的不仅是要让大家学会如何使用,更重要的是弄清配置加载、读取的底层…

搭建Promethues + grafana +alertManager+blakbox 监控springboot 健康和接口情况

一。概述 架构图: 拓扑图: prometheus 是一个开源系统,用于构建监控和报警的工具包。 Prometheus 收集其指标并将其存储为时间序列数据,即指标信息与记录它的时间戳一起存储,以及称为标签的可选键值对。 特点&#…

003.PADS VX2.4选项设置及显示颜色设置

文章目录 一、PADS颜色设置及选项设置二、选项设置1.全局2.设计3.栅格和捕获4.显示5.布线选项页6.覆铜平面选项页7.文本和线选项页8.文本和线选项页9.过孔样式选项页 一、PADS颜色设置及选项设置 一、颜色设置 1.点击设置—显示颜色)(快捷键…

Kkfileview | Docker | 文件预览kkfile配置

文章目录 简介DockerRedis部署 简介 kkFileView为文件文档在线预览解决方案,该项目使用流行的spring boot搭建,易上手和部署,基本支持主流办公文档的在线预览,如doc,docx,xls,xlsx,ppt,pptx,pdf,txt,zip,rar,图片,视频,音频等等 …

SQLSERVER 临时表 和 表变量 有区别吗

一:背景 1. 讲故事 今天和大家聊一套面试中经常被问到的高频题,对,就是 临时表 和 表变量 这俩玩意,如果有朋友在面试中回答的不好,可以尝试看下这篇能不能帮你成功迈过。 二:到底有什么区别 1. 前置思…

十五、flex弹性元素的样式

目录&#xff1a; 1. 基本布局 2. 弹性元素的属性&#xff1a;flex-grow 3. 弹性元素的属性&#xff1a;flex-shrink 4. 弹性元素的属性&#xff1a;flex-basis 5. flex 统一设置这3个属性&#xff08;常用&#xff09; 6. order 一、基本布局 <style>*{margin: 0;paddin…

【Maven】类或者包提示找不到,报红

背景 使用IDEA&#xff0c;类或者包提示找不到&#xff0c;报红 解决方法 1. maven reload 2. 检查profiles是否对 3. 不要选中offline模式 4. 检查本地仓库位置 5. 清掉idea缓存 6. 到本地maven仓库删掉出错的包然后重新maven reload 7. update本地仓库 8. 排查是不是别人没…

智慧用电安全监控管理系统

智慧用电安全监控管理系统是一种基于物联网技术的用电安全管理系统&#xff0c;它通过远程通信技术和云计算平台&#xff0c;实现了对电气设备的实时监控、数据采集、费用计算、远程控制等功能。该系统不仅可以提高用电安全管理的效率&#xff0c;还可以为用户提供更加便捷、可…

Linux(centos 7)将 ens33 改为 eth0

背景&#xff1a; 先说明一下 eth0 与 ens33 的关系&#xff0c;目前的主流网卡为使用以太网络协定所开发出来的以太网卡&#xff08;Ethernet)&#xff0c;因此我们 Linux 就称呼这种网络接口为 ethN (N为数字)。 举个例子&#xff1a;就是说主机上面有一张以太网卡&#xff0…

C++线性表、单链表

概述 在先说链表前&#xff0c;我们先来理清几个概念。 什么是线性表、顺序表和链表&#xff1f;三者有什么关系&#xff1f; 线性表&#xff1a;元素线性排列&#xff0c;在逻辑上具有次序的存储结构。 顺序表&#xff1a;线性表的顺序存储称为线性表。它是用一组地址连续(逻…

抖音短视频seo源码开发部署-技术分享(四)

一、 抖音短视频seo源码开发流程 抖音短视频SEO源码开发流程如下&#xff1a; 1.分析需求&#xff1a;首先需要明确你的SEO目标。分析竞争对手&#xff0c;了解抖音短视频平台的规则&#xff0c;选定目标关键词和主题。 2.编写代码&#xff1a;根据需求编写代码&#xff0c;…

docker 安装向量数据库 Milvus

Miluvs 官网为 www.milvus.io/ Milvus 向量数据库能够帮助用户轻松应对海量非结构化数据&#xff08;图片 / 视频 / 语音 / 文本&#xff09;检索。单节点 Milvus 可以在秒内完成十亿级的向量搜索&#xff08;请参考&#xff1a;在线教程&#xff09;&#xff0c;分布式架构亦…

This application failed to start?

大家好&#xff0c;最近在搞一个定制的图像分割项目&#xff0c;其中需要自己构建数据集。 这里我用到了基于paddle开发高效智能的交互式分割标注软件 EISeg(Efficient Interactive Segmentation)。 它涵盖了通用、人像、遥感、医疗、视频等不同方向的高质量交互式分割模型。另…

低代码——现代数字化人才培养的创新引擎

如今&#xff0c;随着数字时代的蓬勃发展&#xff0c;催生了各行各业数字化转型的浪潮。如果说技术是衍生数字时代的基石&#xff0c;那数字化人才一定是这场浪潮中不可或缺的推动力量。 随着新兴技术的不断创新和应用&#xff0c;全行业对于复合型、创新型的优秀数字化人才需…

四种常见分布式限流算法实现!

大家好&#xff0c;我是老三&#xff0c;最近公司在搞年终大促&#xff0c;随着各种营销活动“组合拳”打出&#xff0c;进站流量时不时会有一个小波峰&#xff0c;一般情况下&#xff0c;当然是流量越多越好&#xff0c;前提是系统能杠地住。大家都知道&#xff0c;一个分布式…

css 网页色调变为黑白

在html的css中加入 filter: grayscale(1);

Java Springboot设置MySQL的ssl连接访问

一、需求背景 需要修改应用程序通过SSL连接mysql数据库。 环境配置 数据库&#xff1a;MySQL 8.0.21 &#xff08;enabled SSL&#xff09; Java版本&#xff1a;openjdk version "1.8.0_332" Springboot版本&#xff1a;v2.5.3 二、生成证书 下面是MySQL数据库服…

提升1Panel的安全性:在Armbian上设置个性化SSL证书

文章目录 基础知识OpenSSLOpenSSL常用命令SSL证书与DDoS攻击SSL证书常见办法机构 armbian安装OpenSSLOpenSSL下载和安装生成私钥和证书生成私钥和证书提示信息的解释challenge password 可能遇到的错误 安装完成后的思考完整的操作演示 基础知识 OpenSSL OpenSSL是一个开源的…