-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 将任何文件作为文本文件打开,无论扩展名如何。谢谢!
.pl
扩展。不是.jpg
。content-type
在 Perl 脚本本身中设置适当的标头;命名文件.jpg
是一种拼凑,而不是好的做法。在您发布的评论中,我现在已将其添加到您的问题中,您声明以下内容:
\n\n\n\xe2\x80\x9cBTW 它必须有 jpg 扩展名,因为它在 cgi-bin 中运行并在记录时输出图像数据,但需要 jpg 扩展名才能在浏览器中呈现为 jpg。\xe2\x80\x9d
\n
你的问题问反了;这是一个经典的XY 问题。您以某种方式决定让 Perl 渲染并将图像作为图像的唯一方法是将 Perl 脚本的文件扩展名设置为.jpeg
最好的情况。
您无需设置 JPEG 扩展名即可在浏览器中将输出呈现为 JPEG。您需要获取 Perl 脚本来输出Content-Type
标头image/jpeg
,就是这样。
我已经在 PHP 中这样做了几十次;Perl 也可以做同样的事情。请在此处的 Stack Overflow 帖子中了解如何执行此操作。该线程中有大量好信息。
\nStack Overflow 线程中这个答案的这个例子似乎是最好的起点;注意我将 更改为type
并image/jpeg
删除了expires
标题以保持简单。有关CGI::header
工作原理的更多信息可以在这里找到:
#!/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 当然是一个模型,因为我不知道你是如何设置的:
\ncurl -ILk https://example.com/cgi-bin/image.pl\n
Run Code Online (Sandbox Code Playgroud)\n输出将是这样的:
\nHTTP/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
反映图像文件的实际长度,就应该可以在浏览器中查看该图像。
为了获得奖励积分,您甚至可以使用标题设置图像的文件名Content-Disposition
,如下所示
"Content-Disposition: attachment; filename=filename.jpeg)"\n
Run Code Online (Sandbox Code Playgroud)\n如何在 Perl 中设置它?我不是 100% 确定,但我相信您可以print CGI::header
在 Perl 代码中更改它,使其看起来像这样;考虑这个伪代码:
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-Disposition
toinline
然后设置文件名值。
归档时间: |
|
查看次数: |
800 次 |
最近记录: |