获取不带 Content-Disposition 的文件名

2023-11-21

我几天来一直在寻找这个问题的解决方案,但找不到任何解决方案。

我想使用网络客户端从网络服务器下载文件。下载工作正常,但我无法获得真实的文件名,这对我来说非常重要。

我在很多主页上看到,文件名应该保存在 Content-Disposition-Header 中。不幸的是,该网站的标题是空的。我试着用以下方法得到它:

string header_contentDisposition ="";
using (WebClient client = new WebClient())
            {
                client.OpenRead(link);

                header_contentDisposition = client.ResponseHeaders["Content-Disposition"];
                MessageBox.Show(header_contentDisposition);
            }

此标头内没有保存任何信息。

如果我尝试使用浏览器(IE、Opera、Chrome)下载文件,文件名会显示在文件对话框中,因此必须将其保存在某个地方。

你能想象我在哪里可以找到它吗?

编辑:我无法从 URL 中提取它,因为该链接是由 php 生成的,例如

http://www.example.com/download.php?id=10

你可以试试这个:

        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
        try
        {

            HttpWebResponse res = (HttpWebResponse)request.GetResponse();
            using (Stream rstream = res.GetResponseStream())
            {
                string fileName = res.Headers["Content-Disposition"] != null ?
                    res.Headers["Content-Disposition"].Replace("attachment; filename=", "").Replace("\"", "") :
                    res.Headers["Location"] != null ? Path.GetFileName(res.Headers["Location"]) : 
                    Path.GetFileName(url).Contains('?') || Path.GetFileName(url).Contains('=') ?
                    Path.GetFileName(res.ResponseUri.ToString()) : defaultFileName;
            }
            res.Close();
        }
        catch { }

对此进行了测试它确实返回wetter.JPG。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

获取不带 Content-Disposition 的文件名 的相关文章

随机推荐

  • 在固定的时间间隔后调用特定方法

    在我的android应用程序中 我想定期调用特定的方法 即 每 5 秒后 我该怎么做 您可以使用Timer用于方法的固定周期执行 这是代码示例 final long period 0 new Timer schedule new Timer
  • 复制完成后,CloudBlockBlob.StartCopyAsync 是否返回?

    有多种方法可以复制 Azure Blob 存储块 有同步和异步版本StartCopy 还有一个BeginStartCopy其中还有完成回调 The BeginStartCopy方法明确指出复制完成时执行回调 The StartCopy两种方
  • 在 JavaFX 中保存为 jpg 的图像是粉红色的

    我想将 ImageView 中的图像保存到具有不同分辨率的文件中 将其作为 png 结果如预期 至于 jpg 我将所有文件设为粉红色 诀窍在哪里 这是代码 Object imagesFromFotoListView ta myFotoLis
  • 如何编写一个只接受一个枚举变量作为输入的函数?

    我有一个枚举 enum Group OfTwo first usize second usize OfThree one usize two usize three usize 我想编写一个仅以参数作为参数的函数Group OfTwo变体
  • CSS3 对 HTA 的支持

    HTA 支持 HTML5 和 CSS3 吗 如果我计划仅在 Windows 操作系统上使用我的应用程序 这是一个执行一些基本文件处理的简单应用程序 HTA 是一个可行的选择吗 如果我使用简单的平面文件 文本文件 来存储 HTA 的数据 是否
  • 如何在Angular中实现多级路由?

    我正在做一个小项目 以便更多地了解 Angular 但我真的不知道如何实现多级路由 我读过文档关于路由器组件的新版本以及 Stack Overflow 上的一些其他主题 first second third 但我找不到解决我的问题的方法 让
  • 透明、无边框的 ProgressDialog

    我有一个ProgressDialog我已将其放置在屏幕底部 以免与徽标重叠 我想做的是为ProgressDialog删除背景和边框 我在这里没有任何运气 有谁知道如何应用这种风格 您是否尝试过将背景设置为透明颜色 这个答案给出了详细的代码示
  • 如何为 HttpClient 请求设置 Content-Type 标头?

    我正在尝试设置Content Type的标头HttpClient我调用的 API 所需的对象 我尝试设置Content Type像下面这样 using var httpClient new HttpClient httpClient Bas
  • 如何处理android中弹出窗口内按钮的onclick事件

    在我的应用程序中 我最初在屏幕上有一个按钮 然后在onclick按钮时 应该会打开一个弹出窗口 在弹出窗口中 我有一个图像按钮 并且onclick通过这个按钮 我想开始一个活动 弹出窗口打开 但我不明白如何处理onclick弹出窗口内的图像
  • 如何将科学记数法转换为小数形式?

    虽然很基本 但我在任何地方都找不到答案 如何禁用小标题中的科学记数法 并让小标题显示小数 My data 我有一个简单的小题 结果是lm gt broom tidy library tidyverse I used dput to get
  • 每侧有 2 个 y 轴且比例不同的 ggplot

    我需要在一个图表中绘制一个显示计数的条形图和一个显示比率的折线图 我可以单独完成这两个图表 但是当我将它们放在一起时 我会缩放第一层 即geom bar 与第二层重叠 即geom line 我可以移动轴吗geom line向右 Answer
  • 屏蔽 CALayer - iPhone

    我正在为 iPhone 创建一个自定义开 关切换开 关 类似于标准开关 并且我正在设置滑块的蒙版 但调用 myView layer setMask maskLayer 设置遮罩层相对于其遮罩层的位置 而不是相对于遮罩层的容器层的位置 对于这
  • 如何让 raw_input 重复直到我想退出?

    说我想用raw input像这样 code raw input Please enter your three letter code or a blank line to quit under if name main 如何让它在每次运行
  • 如何从头开始构建具有人类可读角度的旋转矩阵?

    一直阻碍我进行 3D 编程的一件事是无法理解数学是如何运作的 我可以使用方法和函数在编程流程中很好地遵循数学 那么对我来说一切都清晰且合乎逻辑 但在数学符号中 我只是无法从中得到正面或反面 我一直在阅读网站 观看一些机构的视频试图解释这一点
  • 正则表达式删除多行注释

    我正在尝试使用这个正则表达式 JS g 取代 sdandsads 什么也没有 但它不起作用 为什么 o O 点捕获除换行符之外的所有内容 如果 dotall 为 false 所以要么使用 dotall 正如其他答案 评论中提到的 这在 ja
  • Android:折叠线性布局而不是折叠工具栏

    我正在尝试在单个片段中创建主 详细信息事务 我考虑使用 LinearLayout 作为标题的编辑文本的容器 然后是 RecyclerView 了解详细信息 如何实现类似于 CollapsingToolbar 效果的 LinearLayout
  • Kibana 报告字段存在冲突,我该如何解决?

    在 Kibana 中 我注意到在刷新索引模式后 我的一个字段显示为conflicted Example 所以我知道这是因为 Elastic Search 在该字段中发现了不同类型的值 我如何确定这一点 它导致我的视 觉效果破坏 因为它们无法
  • C# 两组排序数字最快的交集

    我正在应用程序的时间关键部分计算两组排序数字的交集 这个计算是整个应用程序的最大瓶颈 所以我需要加快它的速度 我已经尝试了很多简单的选项 目前正在使用这个 foreach var index in firstSet if secondSet
  • 如何理解 Yahoo! 的原始 HTML使用Python检索数据时的财务?

    我一直在尝试从 Yahoo 检索股票价格 金融 比如苹果公司 我的代码是这样的 使用Python 2 import requests from bs4 import BeautifulSoup as bs html http finance
  • 获取不带 Content-Disposition 的文件名

    我几天来一直在寻找这个问题的解决方案 但找不到任何解决方案 我想使用网络客户端从网络服务器下载文件 下载工作正常 但我无法获得真实的文件名 这对我来说非常重要 我在很多主页上看到 文件名应该保存在 Content Disposition H