Javascript:检查 url 是真实文件还是符号链接

Posted

技术标签:

【中文标题】Javascript:检查 url 是真实文件还是符号链接【英文标题】:Javascript: Check if url is real file or symlink 【发布时间】:2016-08-31 03:38:24 【问题描述】:

我需要相当于 javascript 中的 php 函数 is_link()

我有一个混合了文件和符号链接的目录:

lrwxrwxrwx 1 www-data www-data   30 Aug 31 11:14 AD164_RNA_1.fq.gz -> ../../shared/AD164_RNA_1.fq.gz
lrwxrwxrwx 1 www-data www-data   30 Aug 31 11:14 AD164_RNA_2.fq.gz -> ../../shared/AD164_RNA_2.fq.gz
lrwxrwxrwx 1 www-data www-data   33 Aug 31 11:14 CD34_2_1.clean.fq.gz -> ../../shared/CD34_2_1.clean.fq.gz
lrwxrwxrwx 1 www-data www-data   29 Aug 31 11:14 HL60_RNA_1.fq.gz -> ../../shared/HL60_RNA_1.fq.gz
lrwxrwxrwx 1 www-data www-data   29 Aug 31 11:14 HL60_RNA_2.fq.gz -> ../../shared/HL60_RNA_2.fq.gz
-rw-r--r-- 1 www-data www-data 7.4G Aug 10 16:19 NT07_NT_DNA_1.fq.gz
-rw-r--r-- 1 www-data www-data 7.6G Aug 10 16:18 NT07_NT_DNA_2.fq.gz
-rw-r--r-- 1 www-data www-data 7.0G Aug 10 16:18 NT07_TP_DNA_1.fq.gz
-rw-r--r-- 1 www-data www-data 7.2G Aug 10 16:20 NT07_TP_DNA_2.fq.gz
-rw-r--r-- 1 www-data www-data 284M Aug 23 14:17 RHH3901_1.fq.gz
-rw-r--r-- 1 www-data www-data 276M Aug 31 10:27 RHH3902_1.fq.gz
-rw-r--r-- 1 www-data www-data  99M Aug 31 10:27 RHH3903_1.fq.gz
-rw-r--r-- 1 www-data www-data  88M Aug 31 10:58 RHH3903_1.trimmed.fq.gz

如何检查此目录中文件的 url 是否为真实文件或符号链接,例如:

if ('mydir/NT07_TP_DNA_2.fq.gz' is file) 
    // do file stuff
 else if ('mydir/NT07_TP_DNA_2.fq.gz' is symlink) 
    // do symlink stuff
 else 
    // do other stuff

使用 Javascript/JQuery

【问题讨论】:

在浏览器中?还是这是一个 nodejs 问题? 你的意思是在节点中,当然 在浏览器中,而不是在 node.js 中 一个 URL 可以是真实的或符号链接或两者都不是,没有要求一个 URL 映射到某个目录中的文件或链接条目......简而言之,您的浏览器不能直接访问服务器文件系统......或者换一种方式 - 如果您希望您的浏览器知道 URL“解析”到什么类型的文件,那么您需要服务器端代码,如 PHP,为您完成艰苦的工作 @JaromandaX:如果可以使用here 之类的技巧检查文件是否存在,那么也应该可以检查它是否是符号链接。 【参考方案1】:

terminal,您可以使用cat

$ file="filename.ext"
$ cat $file

其中,如果$file 不是链接,则应将文件的内容打印到stdout,否则打印文件的属性,例如EncodingNameURLType,它们应该打印

TYPE=Link

如果文件是链接。

另见How to check if symlink exists、Symlink check - Linux Bash Script

【讨论】:

我需要 Javascript/JQuery 解决方案,而不是 bash。此外,您的回答几乎杀死了我的终端,因为它仍然cated 指向的文件内容。 @ÖmerAn 不确定是否可以仅在浏览器中使用javascript,但可能会使用nodejsbrowserify。用.desktop 文件尝试了cat,例如,参见***.com/questions/37557098/…;尝试将plnkr.co/edit/pif0ZraAn9RbJI8w2z0w?p=preview 的文件拖到文件管理器的GUI 中,然后运行$ cat filename。虽然示例链接到外部文件URL。你也可以使用$ file -h filename

以上是关于Javascript:检查 url 是真实文件还是符号链接的主要内容,如果未能解决你的问题,请参考以下文章

Javascript - 检查是 Web App 还是 Android App

如何在c#中检查url是文件类型还是网页类型?

Javascript 图像 URL 验证

如何检查获取的响应是不是是javascript中的json对象

如何在PHP中检查它是xml文件还是json文件

如何检查 WebView 的 URL?