All*_*ond 95 .net c# upload webforms stream
我的Web服务中有以下代码:
string str_uploadpath = Server.MapPath("/UploadBucket/Raw/");
FileStream objfilestream = new FileStream(str_uploadpath +
fileName, FileMode.Create, FileAccess.ReadWrite);
Run Code Online (Sandbox Code Playgroud)
有人可以帮助我从代码的第2行解决此错误消息的问题.
不支持给定路径的格式.
文件夹的权限设置为对每个人的完全访问权限,它是文件夹的实际路径.
断点给了我str_uploadpathas 的价值C:\\webprojects\\webservices\\UploadBucket\\Raw\\.
这个字符串有什么问题?
小智 115
而不是使用str_uploadpath + fileName,尝试使用System.IO.Path.Combine:
Path.Combine(str_uploadpath, fileName);
Run Code Online (Sandbox Code Playgroud)
返回一个字符串.
Dan*_*röm 44
我看到发起人发现在尝试使用整个路径保存文件名时发生了错误.实际上":",在文件名中有一个以获得此错误就足够了.如果":"您的文件名中可能存在(例如,如果您的文件名中有日期戳),请确保将其替换为其他内容.即:
string fullFileName = fileName.Split('.')[0] + "(" + DateTime.Now.ToString().Replace(':', '-') + ")." + fileName.Split('.')[1];
Run Code Online (Sandbox Code Playgroud)
Thi*_*PXP 20
如果您尝试将文件保存到文件系统.Path.Combine不是防弹,因为如果文件名包含无效字符,它将无法帮助您.这是一个从文件名中删除无效字符的扩展方法:
public static string ToSafeFileName(this string s)
{
return s
.Replace("\\", "")
.Replace("/", "")
.Replace("\"", "")
.Replace("*", "")
.Replace(":", "")
.Replace("?", "")
.Replace("<", "")
.Replace(">", "")
.Replace("|", "");
}
Run Code Online (Sandbox Code Playgroud)
用法可以是:
Path.Combine(str_uploadpath, fileName.ToSafeFileName());
Run Code Online (Sandbox Code Playgroud)
Ole*_*hko 16
对我来说,问题是肉眼看不见的"?" 左右嵌入字符。
在我从Windows文件属性“安全性”选项卡复制粘贴路径之后,它停留在字符串的开头(恰好在“ D”之前)。
var yourJson = System.IO.File.ReadAllText(@"D:\test\json.txt"); // Works
var yourJson = System.IO.File.ReadAllText(@"?D:\test\json.txt"); // Error
Run Code Online (Sandbox Code Playgroud)
因此,乍一看相同,但实际上两条线是不同的。
小智 7
除其他可能导致此错误的事项:
您不能在完整的PathFile字符串中包含某些字符.
例如,这些字符将使StreamWriter函数崩溃:
"/"
":"
Run Code Online (Sandbox Code Playgroud)
可能还有其他特殊字符也会崩溃.我发现当你尝试将DateTime标记放入文件名时会发生这种情况:
AppPath = Path.GetDirectoryName(giFileNames(0))
' AppPath is a valid path from system. (This was easy in VB6, just AppPath = App.Path & "\")
' AppPath must have "\" char at the end...
DateTime = DateAndTime.Now.ToString ' fails StreamWriter... has ":" characters
FileOut = "Data_Summary_" & DateTime & ".dat"
NewFileOutS = Path.Combine(AppPath, FileOut)
Using sw As StreamWriter = New StreamWriter(NewFileOutS , True) ' true to append
sw.WriteLine(NewFileOutS)
sw.Dispose()
End Using
Run Code Online (Sandbox Code Playgroud)
防止此问题的一种方法是使用良性问题替换NewFileOutS中的问题字符:
' clean the File output file string NewFileOutS so StreamWriter will work
NewFileOutS = NewFileOutS.Replace("/","-") ' replace / with -
NewFileOutS = NewFileOutS.Replace(":","-") ' replace : with -
' after cleaning the FileNamePath string NewFileOutS, StreamWriter will not throw an (Unhandled) exception.
Run Code Online (Sandbox Code Playgroud)
希望这可以为某些人带来一些麻烦......!