如何在 Visual Studio Code 中打开扩展名为 .jpeg 的文本文件?

-3 file-association visual-studio-code

我有 Perl 脚本,其.jpeg文件扩展名是当我在资源管理器中选择文件时,我希望在 Visual Studio Code 中查看文本代码,而不是 VSCode 尝试将其加载到图像编辑器中。

有没有办法.jpeg从 VSCode 用来决定是否在图像查看器而不是文本编辑器中加载的扩展中删除?

我尝试添加{"*.jpeg": "plaintext"}files.associations没有成功。


更新:好的,伙计们,我知道你们谈论我的 Perl 技能是出于善意,但我已经掌握了 Perl 部分。我想我应该纠正我的错误工作,澄清为什么扩展是.jpeg.

如果我想知道潜在的诈骗者是否是本地人,我会发送一个指向他们点击的图片的链接,然后检查我的日志并收到一封包含其 IP 的电子邮件,因为他们.jpeg点击的文件实际上是一个 Perl 脚本,记录了他们的 IP 地址。输出数据前的IP .jpeg。如果我发送了一个声称是图片的链接,但它以 .cgi 或 .pl 结尾,他们可能不会点击它,我将无法知道他们是本地人还是在尼日利亚。这已经通过 Apache 服务器完美运行。

我已经从这个问题中删除了 Perl 标签。这篇文章的目的是能够使用 VSCode 将任何文件作为文本文件打开,无论扩展名如何。谢谢!

Gia*_*968 5

Perl 脚本需要.pl扩展。不是.jpg

\n

如果 Perl 脚本输出 JPEG 图像,则content-type在 Perl 脚本本身中设置适当的标头;命名文件.jpg是一种拼凑,而不是好的做法。

\n

您发布的评论中,我现在已将其添加到您的问题中,您声明以下内容:

\n
\n

\xe2\x80\x9cBTW 它必须有 jpg 扩展名,因为它在 cgi-bin 中运行并在记录时输出图像数据,但需要 jpg 扩展名才能在浏览器中呈现为 jpg。\xe2\x80\x9d

\n
\n

不,Perl 脚本(或任何脚本)\xe2\x80\x99 不需要 JPEG 扩展名来将 JPEG 图像传送到 Web 浏览器。

\n

你的问题问反了;这是一个经典的XY 问题。您以某种方式决定让 Perl 渲染并将图像作为图像的唯一方法是将 Perl 脚本的文件扩展名设置为.jpeg最好的情况。

\n

无需设置 JPEG 扩展名即可在浏览器中将输出呈现为 JPEG。您需要获取 Perl 脚本来输出Content-Type标头image/jpeg,就是这样。

\n

我已经在 PHP 中这样做了几十次;Perl 也可以做同样的事情。请在此处的 Stack Overflow 帖子中了解如何执行此操作。该线程中有大量好信息。

\n

Stack Overflow 线程中这个答案的这个例子似乎是最好的起点;注意我将 更改为typeimage/jpeg删除了expires标题以保持简单。有关CGI::header工作原理的更多信息可以在这里找到

\n
#!/usr/bin/perl\n\nuse strict;\nuse warnings;\nuse CGI;\n\nmy $gfx=\'\';\n$gfx = makeImage();\nprint CGI::header(\n    type=>\'image/jpeg\',\n    content_length=>length($gfx)}\n);\nprint $gfx;\n
Run Code Online (Sandbox Code Playgroud)\n

因此,您可以测试这些内容以确保发送正确的标头,您可以使用此 Curl 命令;URL 当然是一个模型,因为我不知道你是如何设置的:

\n
curl -ILk https://example.com/cgi-bin/image.pl\n
Run Code Online (Sandbox Code Playgroud)\n

输出将是这样的:

\n
HTTP/1.1 200 OK\nDate: Wed, 01 Mar 2023 17:58:48 GMT\nServer: Apache\nContent-Length: 38421\nContent-Type: image/jpeg\n
Run Code Online (Sandbox Code Playgroud)\n

只要Content-Type正确设置图像的标头并且Content-Length反映图像文件的实际长度,就应该可以在浏览器中查看该图像。

\n
\n

额外想法:对于这里的核心问题来说不是必需的,但最好了解一下以防万一。

\n

为了获得奖励积分,您甚至可以使用标题设置图像的文件名Content-Disposition,如下所示

\n
"Content-Disposition: attachment; filename=filename.jpeg)"\n
Run Code Online (Sandbox Code Playgroud)\n

如何在 Perl 中设置它?我不是 100% 确定,但我相信您可以print CGI::header在 Perl 代码中更改它,使其看起来像这样;考虑这个伪代码:

\n
print Center code hereGI::header(\n    type=>\'image/jpeg\',\n    content_length=>length($gfx)},\n    content_disposition=>\'inline\',\n    filename="FileName"\'\n);\n
Run Code Online (Sandbox Code Playgroud)\n

但是不要\xe2\x80\x99t引用我的最后一点信息;我不是一个熟练的 Perl 程序员。但总体思路是设置Content-Dispositiontoinline然后设置文件名值。

\n