Laden...

Encodierung

Erstellt von Ploetzi vor 12 Jahren Letzter Beitrag vor 12 Jahren 1.996 Views
Ploetzi Themenstarter:in
313 Beiträge seit 2006
vor 12 Jahren
Encodierung

Hallo,
ich schicke an meinen ASP.net basierten Webdienst eine Datei mit einem ä im Dateinamen per Fileupload, und dann erkennt er am Server den Dateinamen falsch und macht aus dem ä ein anderes Sonderzeichen.

Das hat vermutl. was mit Encodierung zu tun,... aber wie löse ich das Schlamassel?

Oder eroiere die Ursache.

Grüsse

D
615 Beiträge seit 2009
vor 12 Jahren

Hallo Ploetzi

Validiere doch vor dem senden den Dateinamen und überprüfe auf Umlaute. Dies kannst du dann ja durch etwas ersetzen (z.B Ä = AE).

Beste Grüsse

Diräkt

Ploetzi Themenstarter:in
313 Beiträge seit 2006
vor 12 Jahren

nja, bei einem fileupload kann ich das am client nicht machen,...ausserdem sollte das ja trotzdem möglich sein

16.833 Beiträge seit 2008
vor 12 Jahren

Hi,

zeig doch mal Dein Code. Mir ist bislang kein fehlerhafter Upload mit Umlauten vorgekommen.

Gruß

Ploetzi Themenstarter:in
313 Beiträge seit 2006
vor 12 Jahren

dazuzusagen ist, ich mache, das nicht mit asp.net textboxen sondern html...

Ploetzi Themenstarter:in
313 Beiträge seit 2006
vor 12 Jahren

Hier ein relevanter Codeausschnitt


  if(File.Exists(Server.MapPath("../App_Data/Karten/") + FileUpload1.PostedFile.FileName.Replace("ö","oe").Replace("Ö","Oe").Replace("Ö","ae").Replace("ä","Ae").Replace("ü","ue").Replace("Ü","Ue"))){
                Label1.Text = "Datei existiert bereits";
           }else{
            string filepath = FileUpload1.PostedFile.FileName;
            System.Diagnostics.Debug.WriteLine("Filename" + filepath);

            System.Diagnostics.Debug.WriteLine("Filename" + filepath.Replace("ö","oe").Replace("Ö","Oe").Replace("Ö","ae").Replace("ä","Ae").Replace("ü","ue").Replace("Ü","Ue"));
            if (FileUpload1.PostedFile.FileName.ToLower().EndsWith("jpeg") || FileUpload1.PostedFile.FileName.ToLower().EndsWith("jpg"))
            {
             
            System.Drawing.Image UploadedImage = System.Drawing.Image.FromStream(FileUpload1.PostedFile.InputStream);


                if (UploadedImage == null)
                  {
                    Label1.Text = "Kein Bild";
                    System.IO.File.Delete(Server.MapPath("../App_Data/Karten/") + filepath);
                }
16.833 Beiträge seit 2008
vor 12 Jahren

Guten Morgen,

ich bin zwar nicht wirklich mitten drin im klassischen ASP.NET aber für mich schaut das ziemlich nach einer Reise mit der Kirche ums Dorf aus.Die ganzen Pfad-Zusammensetzungen sehen auch nicht so sauber aus. Du solltest auf die Funktionen von System.IO zum Beispiel Path.Combine() zurückgreifen.

So wie ich das in Erinnerung hab, reicht es, wenn Du ein einfaches <input />-Feld hast, das Du im CodeBehind über das id-Attribut direkt ansprechen kannst.
Ein ähnliches Verhalten hab ich bei diesem Beispiel Simple File Upload with ASP.NET gefunden.

Vielleicht hilft es Dir weiter.

Ploetzi Themenstarter:in
313 Beiträge seit 2006
vor 12 Jahren

Habs gefunden, das encoding war kein UTF8.