从一个URL里取出文件的拓展名

本文介绍了两种从URL中提取文件扩展名的方法,以便于判断文件类型。通过PHP函数pathinfo()与explode(),以及parse_url()与substr()实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有时候做项目的时候需要从URL里取出文件的拓展名,来判断文件的类型,两种小方法:

function getExt($url)
{
	$url = pathinfo($url);
	$url = explode('?', $url['extension']);
	$ext = $url[0];
	return $ext;
}


function getExt2($url)
{
	$url = parse_url($url);
	$path = $url['path'];
	$ext = substr($path, -3);
	return $ext;
}
$url = 'http://blog.youkuaiyun.com/lingchen__/article/details/68943560.php?id=8';
$ext = getExt($url);
$ext = getExt2($url);
echo $ext;


### 如何从文件流中提取文件名 #### Java 中通过 File 对象获取流的文件名Java 编程环境中,当处理文件输入/输出操作时,可以利用 `File` 类来访问文件的相关信息。具体来说,如果有一个指向某个文件的输入或输出流,则可以通过创建该文件对应的 `File` 实例并调用其 `getName()` 方法获得文件的名字[^1]。 ```java import java.io.File; import java.io.FileInputStream; public class Main { public static void main(String[] args) throws Exception { FileInputStream fis = new FileInputStream("example.txt"); String fileName = new File(fis.toString()).getName(); System.out.println(fileName); } } ``` 需要注意的是,在实际应用中通常不会直接传入流对象作为参数给 `File` 构造器;这仅用于说明概念。更常见的方式是从已知路径构建 `File` 对象再打开相应的流。 #### 前端 JavaScript 动态获取 HTTP 请求头中的文件名称 对于基于 Web 的应用程序而言,特别是涉及到从前端发起请求以下载文件的情况,服务器可能会将文件名放在 HTTP 响应头部字段 Content-Disposition 中。为了能够读取到这个信息,浏览器发送跨域 AJAX 请求时可能需要服务端设置额外的 CORS 头部 Access-Control-Expose-Headers 来暴露特定响应头项[^2][^3]。 ```javascript fetch(url, { method: 'GET' }) .then(response => { const contentDisposition = response.headers.get('content-disposition'); let filename = "unknown"; if (contentDisposition) { const regex = /filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/; const matches = regex.exec(contentDisposition); if (matches != null && matches[1]) { filename = matches[1].replace(/['"]/g, ''); } } console.log(`Filename is ${filename}`); }); ``` 这段脚本展示了如何解析 Content-Disposition 字符串从而得到其中携带的实际文件名部分。 #### C# 分离字符串形式下的文件路径、文件名及其扩展名 除了以上两种情况外,有时也会遇到这样的需求——即接收到了表示整个文件位置的一整条字符串(可能是绝对也可能是相对),此时就需要借助于编程语言提供的工具函数来进行拆分了。比如在 C# 当中就可以采用如下方式实现: ```csharp using System.IO; string fullPath = @"C:\Users\ExampleUser\Documents\example.pdf"; int lastSlashIndex = fullPath.LastIndexOf("\\", StringComparison.Ordinal); if(lastSlashIndex >= 0){ string directoryPath = fullPath.Substring(0, lastSlashIndex); // 获取目录路径 string fileNameWithExtension = Path.GetFileName(fullPath); // 获取带拓展名文件名 string fileExtension = Path.GetExtension(fullPath); // 获取文件拓展名 } Console.WriteLine($"Directory path: {directoryPath}"); Console.WriteLine($"Full name with extension: {fileNameWithExtension}"); Console.WriteLine($"File Extension: {fileExtension}"); ``` 此代码片段使用了 `System.IO.Path` 提供的方法来安全有效地完成任务,并且考虑到了 Windows 平台上的特殊字符转义问题[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值