gpt4 book ai didi

C# 客户端 - Perl 服务器 - 文件路径区分大小写

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:42:55 27 4
gpt4 key购买 nike

我们有一个 C# .Net 客户端应用程序,它通过 REST over HTTP 发送一些命令。服务器位于用 Perl 编写的 Linux 机器上。

这些命令包含位于服务器上的文件路径,用户可以输入这些路径。由于用户在 Windows 上,我们希望他们不区分大小写,但这给我们在定位文件服务器端带来了一些问题。

我们怎样才能得到正确的套管?

我们有 2 种可能的解决方案:

  • 在客户端上使用 winapi 调用来修复要正确区分大小写的路径。 (这些文件在客户端计算机上的共享文件夹中可见)

  • 在服务器上使用一些 perl 代码来定位一个不区分大小写路径的文件作为输入

有什么建议吗?我们希望这适用于所有 Windows XP SP2 及更高版本的客户端计算机。

更新:我们决定它应该是固定的客户端,在极少数情况下会出现大小写不匹配。

如果在文件目录中出现“找不到文件”错误,我们将运行此程序。有人必须修改它以使其也适用于文件,但在我们的例子中,文件名永远不会错(我不想解释原因):

        string FixDirectory(string fullpath)
{
return fullpath
.Split(Path.DirectorySeparatorChar)
.Skip(1)
.Select(path =>
{
string[] split = fullpath.Split(new string[] { path }, StringSplitOptions.None);
string tempDir = split[0];
string[] dirs = Directory.GetDirectories(tempDir, path);
fullpath = fullpath.Replace(Path.Combine(tempDir, path), dirs[0]);
return fullpath;
})
.Last();
}

最佳答案

您的第一个建议很有意义——如果客户端可以看到该文件,那么在将数据提交给服务器之前,在客户端上使用 API 调用来获取真实的文件名(大小写正确)。用户根本不需要手动输入文件名 - 使用标准的“浏览...”小部件可以弹出一个对话框,允许用户在他的文件系统中查找文件。

在区分大小写的服务器上使用不区分大小写的文件搜索应该只是最后的手段。正如您在后续评论中提到的,存在各种难以解释的边缘情况,因此最好完全避免这种情况。

关于C# 客户端 - Perl 服务器 - 文件路径区分大小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1790912/

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