gpt4 book ai didi

delphi - 在 Delphi 中对文件名进行 URLEncode 的最佳方法是什么?

转载 作者:行者123 更新时间:2023-12-03 15:19:36 27 4
gpt4 key购买 nike

我的桌面应用程序必须从互联网下载文件。文件的路径是已知的,文件名本身是半可变的,即其他人将把新文件放在那里,而我的应用程序将必须下载这些文件。

现在我想确保 URL 是安全的,并且它会被正确解释。另外,如果文件名中有“#”(你永远不知道),我确实希望对其进行编码。 Javascript 为此有两个不同的函数:encodeURIencodeURIComponent。后者还对“#”字符等进行编码。当然,我可以自己推出,但我认为肯定有为此做好准备的功能,而且我最好避免犯一些老错误。

我将使用使用 WinInet 系列 API 函数(InternetOpen 及其同类)的对象来下载该文件。

于是我开始在MSDN上翻找,果然有UrlCanonicalize 。但还有UrlEscape , CreateUri (但这在 Delphi 2010 单元中不存在),最后 InternetCreateUrl ,这需要我拆分整个 URL。我宁愿将 URL 的第一部分与 URLEncoded 文件名连接起来。

此外,它们都有大量不同的标志、不同的默认值,这些默认值在 Windows 版本的过程中发生了变化,我无法再找出其中的差异。有谁知道哪一个最适合此目的?

最佳答案

尝试使用 TIdURI.PathEncode 函数(位于 idURI 单元中),该函数是 delphi 附带的 Indy 库的一部分。

{$APPTYPE CONSOLE}

{$R *.res}

uses
idURI,
SysUtils;

Var
FileName : string;
Encoded : string;
begin
try
FileName:='File with a Very weird f***name*#%*#%<>[]';
Encoded:=TIdURI.PathEncode(FileName);
Writeln(Encoded);
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
Readln;
end.

这将返回

File%20with%20a%20Very%20weird%20f%2A%2A%2Aname%2A%23%25%2A%23%25%3C%3E%5B%5D

您还可以查看 TIdURI.URLDecodeTIdURI.URLEncode 函数。

关于delphi - 在 Delphi 中对文件名进行 URLEncode 的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9724010/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com