Avatar billede medjeti Nybegynder
07. juli 2005 - 17:26 Der er 2 kommentarer

Ugyldige tegn i stien / Illegal characters in path

Heyhey,

Jeg sidder og bakser med at sende en fil fra en windows form til en aspx-side, og jeg løber ind i problemer når der er specialkarakterer i filnavnet. Fejlen kommer i dokumentet, der tager imod filen, og undtagelsen lyder:

System.ArgumentException: Ugyldige tegn i stien.

Staksporing:
[ArgumentException: Ugyldige tegn i stien.]  System.Security.Permissions.FileIOPermission.HasIllegalCharacters(String[] str) +276  System.Security.Permissions.FileIOPermission.AddPathList(FileIOPermissionAccess access, String[] pathListOrig, Boolean checkForDuplicates, Boolean needFullPath, Boolean copyPathList) +88  System.Security.Permissions.FileIOPermission..ctor(FileIOPermissionAccess access, String[] pathList, Boolean checkForDuplicates, Boolean needFullPath) +43  System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, Boolean useAsync, String msgPath, Boolean bFromProxy) +421  System.IO.FileStream..ctor(String path, FileMode mode) +52  System.Web.HttpPostedFile.SaveAs(String filename) +48  MedjetiTester.handle_upload.HandleUpload() in d:\dokumenter\.net\medjetitester\webrod\handle_upload.aspx.cs:77  MedjetiTester.handle_upload.Page_Load(Object sender, EventArgs e) in d:\dokumenter\.net\medjetitester\webrod\handle_upload.aspx.cs:43  System.Web.UI.Control.OnLoad(EventArgs e) +67  System.Web.UI.Control.LoadRecursive() +35  System.Web.UI.Page.ProcessRequestMain() +750

Hvis jeg bruger en almindelig <input type="file"> til at uploade med, kan jeg gemme filen uden problemer, så sagens kerne må ligge i min afsendelse af filen.

Jeg sender filen vha. en klasse, jeg har fundet her: http://dotnetjunkies.com/WebLog/jdixon/archive/2004/10/25/29685.aspx - og det fungerer altså upåklageligt så længe filen ikke indeholder specialkarakterer...

Jeg har lagt mærke til linien:

byte[] PostData = System.Text.Encoding.ASCII.GetBytes(Data);

- hvor filen bliver lagt i et ASCII-encoded byte-array, og tænkte at det kunne være synderen. Jeg har prøvet at ændre Encoding'en til fx UTF-8, men så passer Content-Length'en ikke længere og IIS returnerer en fejl.


Nogen der har været ude for noget lignenede og/eller har en idé til hvad jeg kan prøve?

På forhånd tak!
Avatar billede arne_v Ekspert
07. juli 2005 - 18:10 #1
prøv:


byte[] PostData = System.Text.Encoding.Default.GetBytes(Data);
Avatar billede medjeti Nybegynder
07. juli 2005 - 18:43 #2
Tak for tippet. Jeg har i mellemtiden prøvet mig frem med forskellige former for encoding:

System.Text.Encoding.Default.GetBytes(Data);
System.Text.Encoding.GetEncoding("ISO-8859-1").GetBytes(Data);
System.Text.Encoding.GetEncoding("windows-1252").GetBytes(Data);
- fjerner specialkarakterer fra filnavnet ("fadøl" bliver til "fadl")

System.Text.Encoding.GetEncoding("ISO-8859-5").GetBytes(Data);
- laver ø til o, æ til a osv.

...men jeg har altså ikke kunnet finde en encoding, der præserverer specialkarakter uden at aspx'en fejler.
Gode ideer er velkomne!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester