gpt4 book ai didi

c# - 为什么路径中有非法字符?

转载 作者:太空宇宙 更新时间:2023-11-03 19:10:08 25 4
gpt4 key购买 nike

....
case "DOWNLOAD":
if (File.Exists(commandContent)) {
MessageBox.Show(commandContent);
result = System.Convert.ToBase64String(File.ReadAllBytes(commandContent)); //ERROR
result = HttpUtility.UrlEncode(result);
}
break;

并且未处理的错误异常在路径中显示“非法字符”。 MessageBox 显示正确的路径

  C:\Users\Me\Myfile.exe

我尝试执行以下操作:

 commandContent = commandContent.replace(@"\",@"\\");
result = System.Convert.ToBase64String(File.ReadAllBytes(commandContent)); //ERROR

我还尝试了以下方法:

 commandContent = @""+commandContent+"";
result = System.Convert.ToBase64String(File.ReadAllBytes(commandContent)); //ERROR

但这行不通。更奇怪的是,它按原样正常工作,但是一旦我对将 commandContent 插入 db 的方式进行了一些修改(使用 ajax 而不是常规表单提交),就会出现这个问题?

编辑:

我尝试使用

对路径进行硬编码
 commandContent = @"C:\Users\Me\file.exe";

一切正常。如何强制变量不包含任何非法字符?

最佳答案

我很确定你在字符串 commandContent 的结尾或开头有\n 或\r 或\t 或 ...

你能做一个

  System.Text.Encoding.UTF8.GetBytes (commandContent)

并检查每个字节?

也许 ajax 调用没有生成正确的字符串/路径

你可以用它来找到哪个

class Program
{
static void Main(string[] args)
{
var commandContent = "C:\\Users\\Me\\file.exe\n";
var commandContentBytes = System.Text.Encoding.UTF8.GetBytes(commandContent);
var invalidPathChars = System.IO.Path.GetInvalidPathChars().Select(x=>Convert.ToByte(x));

var found = commandContentBytes.Intersect(invalidPathChars);
}
}

关于c# - 为什么路径中有非法字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21389137/

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