通过url获取文件名称

java中下载文件或导出文件到response的输出流中,文件名称乱码的文件解决方案 1、自定义导出的文件名称,需要进行url编码 如此,下载后可以获取到指定的文件名 阅读详情

       如何通过一个文件的下载链接(url)获取到需要下载的文件名称是我们经常要遇到的一个问题。本文提供两种解决办法,基本上这两种解决办法结合可以处理大部分情况。

 

一、获取header字段Content-Disposition

Content-disposition 是 MIME 协议的扩展,MIME 协议指示 MIME 用户代理如何显示附加的文件。Content-disposition其实可以控制用户请求所得的内容存为一个文件的时候提供一个默认的文件名,文件直接在浏览器上显示或者在访问时弹出文件下载对话框。

该字段包含了两种返回值:

1、inline:将文件内容直接显示在页面

Content-Disposition: inline;filename=hello.jpg

2、attachment:弹出对话框让用户下载

Content-Disposition: attachment;filename=hello.jpg

可以看出无论是哪种返回值,其中都包括了filename,“=”后面就是我们需要的文件名称。

这里会出现一个问题,获取到的文件名称可能会出现中文乱码的情况。

具体原因可查看:https://blog.robotshell.org/2012/deal-with-http-header-encoding-for-file-download/

 

二、通过Url.getFile()获取

Url中的file属性是url对应的文件名部分,将获取到的file值进行解码,截取最后的部分即可。

getFile() && getPath()

getFile() = getPath() + getQuery()

file等于path和query两个字段值相加,存在query为空的情况

比如说:https://dldir1.qq.com/qqfile/qq/TIM2.3.2/21173/TIM2.3.2.21173.exe

url.getFile() : /qqfile/qq/TIM2.3.2/21173/TIM2.3.2.21173.exe

因为路径中不包含中文,因此你可以看得“懂”,如果路径中包含中文,此处需要将获得值进行解码。

可以看出最后的值“TIM2.3.2.21173.exe”就是我们需要的文件名称。

 

三、简单实现

public static String getUrlName(String fileUrl) {

    String fileName = "";
    try {
        URL url = new URL(fileUrl);
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setRequestMethod("GET");
        conn.connect();

        // 方法一
        String raw = conn.getHeaderField("Content-Disposition");
        if (raw != null && raw.indexOf("=") > 0) {
            fileName = raw.split("=")[1];
            fileName = new String(fileName.getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8);
        }

        // 方法二
        String newUrl = conn.getURL().getFile();
        if (newUrl == null || newUrl.length() <= 0) {
            newUrl = java.net.URLDecoder.decode(newUrl, "UTF-8");
            int pos = newUrl.indexOf('?');
            if (pos > 0) {
                newUrl = newUrl.substring(0, pos);
            }
            pos = newUrl.lastIndexOf('/');
            fileName = newUrl.substring(pos + 1);
        }

    } catch (Exception e) {
        e.printStackTrace();
    }

    return fileName;
}

 

 

 

PyTorch实战(2)——使用PyTorch构建神经网络 在本节中,我们使用 PyTorch 在简单数据集上构建了一个神经网络,训练神经网络来映射输入和输出,并通过执行反向传播来更新权重值以最小化损失值,并利用 Sequential 类简化网络构建过程;介绍了获取网络中间值的常用方法,以及如何使用 save、load 方法保存和加载模型,以避免再次训练模型。 阅读详情

相关推荐

使用abagen工具箱获取基于脑区的基因表达矩阵

脑区模板定义了您感兴趣的脑区的空间位置。abagen提供了一些预定义的脑区模板,您可以选择使用,也可以使用自定义的脑区模板。它提供了一种简便的方式来获取基于脑区的基因表达矩阵。abagen需要使用Allen脑图谱数据来获取基因表达矩阵。您可以使用abagen内置的下载功能来获取这些数据。这就是使用abagen工具箱获取基于脑区的基因表达矩阵的详细步骤。通过按照上述步骤操作,您可以轻松获取并使用Allen脑图谱数据中的基因表达信息。一旦您加载了脑区模板,您可以使用abagen来获取基于脑区的基因表达矩阵。

web_bug407的博客 1301

urlconnection 获取响应头_如何从HttpURLConnection的响应头获取文件名?

我有客户端服务器程序,客户端通过它的URL和服务器连接到服务器读取文件并写入输出流,客户端将获得该文件并将其保存在目录中。问题是我没有得到我从服务器发送的文件名。这是我的客户端服务器代码。如何从HttpURLConnection的响应头获取文件名?客户端,private void receiveFile() throws IOException {String url11="http://loca...

weixin_40006185的博客 1679

晶圆自动加工生产线sw17_零件图_机械工程图_机械三维3D建模图打包下载.zip

晶圆自动加工生产线sw17_零件图_机械工程图_机械三维3D建模图打包下载.zip

URL获取文件名称

var url = 'https://csdnimg.cn/release/phoenix/vendor/pagination/paging.css'; var filename = url.substring(url.lastIndexOf('/')+1); lastIndexOf() : 可返回一个指定的字符串值最后出现的位置,在一个字符串中的指定位置从后向前搜索。 str...

日常笔记/总结/系列知识梳理 2万+

文件下载小功能

Java代码实现文件下载功能。 还与不足之处

u013604031的博客 592

http请求contentType;responseType;content-Disposition

http请求: 含义:content-type:http/https发送信息至服务器时的内容编码类型,contentType用于表示发送数据流的类型,服务器根据编码类型使用特定的解析方式。大白话就是告诉接收端传递的内容主体是什么。 常用类型:1. application/json: 告知接收端发送的json对象????参数以序列化后的json字符传传递参数:JSON.Stringify(data) [...

Wangyanan3351的博客 1320

导出时获取Content-Disposition里面的内容

【代码】导出时获取Content-Disposition里面的内容。

m0_65742145的博客 557

java获取url文件名称

Java获取URL文件名的技巧与实践 在Java开发中,经常需要从URL中提取文件名,这在处理网络资源下载、文件上传等功能时尤为重要。本文将介绍如何使用Java获取URL的文件名,并提供相应的代码示例。 旅行图:获取URL文件名的步骤 在开始编写代码之前,我们先通过一个旅行图来了解获取URL文件名的基本步骤。 journe...

weixin_36002897的博客 1256

java从文件下载Url获取文件名称

【代码】java通过文件下载的URL获取文件名称

qq_35757427的博客 2459

url获取文件名称和文件类型

public static void main(String[] args) { String url = "http://172.106.11.21/files/home/upload/department/base/201912090541573c6abdf2394d4ae3b7049dcee456d4f7.doc"; String Filesuffixtype = getUrlFileSuffixType(url); String urlFil...

Gblfy_Blog 2744

c# 从url附件地址中获取文件名称

Uri uri = new Uri(url); var filename = HttpUtility.UrlDecode(uri.Segments.Last());

nbspzs的专栏 2653

从地址栏获取文件名

从http地址中获取文件名称,已经记得使用 URLDecoder.decode(url) 解码

Lambda 261

JS、Vue根据文件路劲获取文件名称方法

//获取文件名称 getFileName(url) { let name = ""; if (url !== null && url !== "") { name = url.substring(url.lastIndexOf("/") + 1); } else { name = "无"; } return name; },

浮萍的博客 2699

URL学习 (进一步补充)

URLWhat is URL?How to USE?URLURLConnection类HttpURLConnection 类关闭连接小技巧 What is URL? URL是统一资源定位符(Uniform Resource Locator)简称,标识互联网上任意的一个资源的地址。通过URL,用户可以访问各种网络资源,比如常见的WWW和FTP站点。浏览器通过解析URL,在网络上查找对应的文件或其他资源。 URL 语法格式: protocol://resourceName protocol:指明获取这一资

qq_32614525的博客 476

java获取下载文件_Java获取HTTP下载文件文件名称

注意中间有段去符号的代码,这段代码只适合Java11默认HttpClient使用。/*** 获取文件名称* 下载文件名称:如果不存在返回默认的文件名称* Content-Disposition:attachment;filename=snail.jar?version=1.0.0* Content-Disposition:attachment;filename="snail.jar"** @par...

weixin_42701905的博客 1644

Wininetdll函数库:根据url获取缓存文件

using System;using System.Collections.Generic;using System.Text;using System.Runtime.InteropServices;namespace ConsoleApplication34{ class Program { [StructLayout(LayoutKi

jinjazz 3209

JS获取网络路径中的文件名

<input id="i1" type="text" value="http://www.melebao.net/try/tool/base32.html"><input type="button" value="获取" onclick="getFileName();"> <script language="javascript">function g...

weixin_34279061的博客 328

kindeditor富文本框,上传文件后,显示文件名称

kindeditor作为一个应用广泛富文本框,我们经常会利用到它,然而在使用的过程中,发现有的地方使用起来很不方便,例如本文要说的,用户上传文件之后,默认只有文件URL,没有文件说明,如图:        点击确定之后,内容中显示的只是一串很长的地址,这并不是我们想要的。        更多的时候,我们只是希望它这里能默认显示文件名称,只有在文件说明里,填写了文件名称,在内容里面才会以名称...

weixin_30279751的博客 324

Android下载文件,如何获取实际的文件名

1. 前言之前APP实现下载文件的功能,都是让后台把下载地址和文件名(包含文件后缀名)传过来。不过近日后台只传了下载地址,我懒得麻烦人家也把文件名传来,所以就自己查资料,想方法解决。2. 解决方案解决的办法如下面的代码所示,目前还算能满足要求,如果大伙们有更好的方法,可以在评论说一声。 HttpURLConnection connection = null; int...

Fantasy 6799

链接中获取文件名

'算得上是-test.pdf' 获取文件名 var str = 'http://aaa.com/s/ddd/算得上是-test.pdf'; console.log(str.match(/([^/*.]+)\.\w+$/)) console.log(str.match(/([^/*.]+)\.\w+$/)[0]) // 转载于:https://www.cn...

weixin_30493401的博客 131

xslt中获取当前XML文件名

     xmlns:xsl="http://www.w3.org/1999/XSL/Transform"   xmlns:msxsl="urn:schemas-microsoft-com:xslt"   xmlns:fn="usercode">       function   getUrl(obj){         var   oNode=obj.nextNode;        

学前班 1903
上一篇: Ehcache3.8 Quick Start & SpringBoot下集成
下一篇: 修改elasticsearch字段数据类型
Nut___
博客等级 码龄9年 23粉丝 23原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值