"Format danej ścieżki nie jest obsługiwany."
W moim serwisie internetowym mam następujący kod:
string str_uploadpath = Server.MapPath("/UploadBucket/Raw/");
FileStream objfilestream = new FileStream(str_uploadpath +
fileName, FileMode.Create, FileAccess.ReadWrite);
Czy ktoś może mi pomóc rozwiązać problem z tym Komunikatem o błędzie z linii 2 kodu.
Format danej ścieżki nie jest obsługiwany.
Uprawnienia do folderu są ustawione na Pełny Dostęp dla wszystkich i jest to rzeczywista ścieżka do folderu.
Punkt przerwania dał mi wartość str_uploadpath
jako C:\\webprojects\\webservices\\UploadBucket\\Raw\\
.
13 answers
Zamiast używać str_uploadpath + fileName
, spróbuj użyć System.IO.Path.Combine
zamiast:
Path.Combine(str_uploadpath, fileName);
Który zwraca łańcuch znaków.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-09-08 13:27:42
Widzę, że twórca dowiedział się, że wystąpił błąd podczas próby zapisania nazwy pliku z całą ścieżką. W rzeczywistości wystarczy mieć ":"
w nazwie pliku, aby uzyskać ten błąd. Jeśli w nazwie pliku może być ":"
(na przykład jeśli w nazwie pliku znajduje się znacznik daty), upewnij się, że zastąpisz je czymś innym. I. E:
string fullFileName = fileName.Split('.')[0] + "(" + DateTime.Now.ToString().Replace(':', '-') + ")." + fileName.Split('.')[1];
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-17 13:37:38
Dla mnie problemem był niewidzialny dla ludzkiego oka ""
od lewej do prawej osadzanie znaku .
Utknął na początku łańcucha (tuż przed 'D'), po skopiowaniu-wklejony ścieżkę, z karty Właściwości pliku windows bezpieczeństwo.
var yourJson = System.IO.File.ReadAllText(@"D:\test\json.txt"); // Works
var yourJson = System.IO.File.ReadAllText(@"D:\test\json.txt"); // Error
Więc te, identyczne na pierwszy rzut oka, dwie linie są w rzeczywistości różne.Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-12-02 13:51:52
Jeśli próbujesz zapisać plik w systemie plików. / Align = "left" / Combine nie jest wypunktowany, ponieważ nie pomoże, jeśli nazwa pliku zawiera nieprawidłowe znaki. Oto metoda rozszerzenia, która usuwa nieprawidłowe znaki z nazw plików:
public static string ToSafeFileName(this string s)
{
return s
.Replace("\\", "")
.Replace("/", "")
.Replace("\"", "")
.Replace("*", "")
.Replace(":", "")
.Replace("?", "")
.Replace("<", "")
.Replace(">", "")
.Replace("|", "");
}
A użycie może być:
Path.Combine(str_uploadpath, fileName.ToSafeFileName());
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-26 23:04:04
Między innymi, które mogą powodować ten błąd:
Nie możesz mieć pewnych znaków w pełnym łańcuchu ścieżek.
Na przykład, te znaki spowodują awarię funkcji StreamWriter:
"/"
":"
Mogą być też inne znaki specjalne, które ją niszczą. Zauważyłem, że dzieje się tak, gdy próbujesz na przykład umieścić znacznik DateTime w nazwie pliku:
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
Jednym ze sposobów uniknięcia tego problemu jest zastąpienie znaków problemowych w NewFileOutS łagodnymi jedynki: {]}
' 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.
Mam nadzieję, że to uratuje komuś ból głowy...!Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-06 20:40:20
Jeśli pojawi się ten błąd w PowerShell, najprawdopodobniej dlatego, że używasz Resolve-Path
do rozwiązywania zdalnej ścieżki, np.
Resolve-Path \\server\share\path
W tym przypadku Resolve-Path
zwraca obiekt, który po przekonwertowaniu na łańcuch znaków nie zwraca prawidłowej ścieżki. Zwraca wewnętrzną ścieżkę PowerShella:
> [string](Resolve-Path \\server\share\path)
Microsoft.PowerShell.Core\FileSystem::\\server\share\path
Rozwiązaniem jest użycie właściwości ProviderPath
na obiekcie zwracanym przez Resolve-Path
:
> Resolve-Path \\server\share\path | Select-Object -ExpandProperty PRoviderPath
\\server\share\path
> (Resolve-Path \\server\share\path).ProviderPath
\\server\share\path
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-25 17:14:56
Spróbuj zmienić:
Server.MapPath("/UploadBucket/Raw/")
Do
Server.MapPath(@"\UploadBucket\Raw\")
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-09-08 13:41:18
To był mój problem, który może komuś pomóc -- chociaż nie był to problem OP:
DirectoryInfo diTemp = new DirectoryInfo(strSomePath);
FileStream fsTemp = new FileStream(diTemp.ToString());
Określiłem problem, wysyłając moją ścieżkę do pliku dziennika i stwierdzając, że nie formatuje się poprawnie. Poprawne dla mnie było po prostu:
DirectoryInfo diTemp = new DirectoryInfo(strSomePath);
FileStream fsTemp = new FileStream(diTemp.FullName.ToString());
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-09 21:05:22
Używa ścieżki .Połącz pomoc w metodzie? Jest to bezpieczniejszy sposób łączenia ścieżek plików. Może być tak, że ma problemy z połączeniem ścieżek razem
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-09-08 13:26:32
Miałem ten sam problem dzisiaj. Plik, który próbowałem załadować do mojego kodu, był otwarty do edycji w Excelu. Po zamknięciu Excela kod zaczął działać!
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-01-29 08:09:27
Używam (ograniczonego) Kreatora wyrażeń dla zmiennej do użycia w prostym zadaniu systemu plików, aby utworzyć archiwum pliku w SSIS.
To jest mój szybki i brudny hack, Aby usunąć dwukropki, aby zatrzymać błąd: @[User:: LocalFile] + " - " + REPLACE ((DT_STR, 30, 1252) GETDATE(), ":", "-") + ".xml "
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-10-16 01:16:28
Image img = Image.FromFile(System.IO.Path.GetFullPath("C:\\ File Address"));
Potrzebujesz getfullpath by pointed class. Miałem ten sam błąd i naprawiony...
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-11-10 21:05:25
Jeśli wartość jest adresem URL pliku, takim jak file: / / C: / whatever, Użyj klasy Uri do przetłumaczenia na zwykłą nazwę pliku:
var localPath = (new Uri(urlStylePath)).AbsolutePath
Ogólnie rzecz biorąc, korzystanie z dostarczonego API jest najlepszą praktyką.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-10-09 06:16:42