Marcus: Plausibilitätsproblem??

Hallo Leute,
ich hab da ein Problem, ich seh denn Wald vor lauter Bäumen nicht:-)
Nein, Spaß beiseite, ich habe ein Formular wo man auch Dateien uploaden kann. In in der Plausibilität wird dann gefragt welches Format die Datei hat, das klappt auch alles super nur funktioniert das ganze nicht richtig wenn ein Leerzeichen oder Sonderzeichen in dem Dateinamen vorkommt.
Ich schätze mein Problem liegt irgendwo in den regulären Ausdrücken, ich hoffe einer von euch kann mir da weiterhelfen.

var chr;
chr = document.job.arbeitsproben.value ;
if (chr.length > 0){
var reg = /\b.doc\b|\b.pdf\b|\b.txt\b|\b.ppt\b/i ;
var ergebnis = reg.test(chr);
if (ergebnis == false){
  alert("Falsches Format");
  document.job.arbeitsproben.select();
  document.job.arbeitsproben.focus();
  return false;
  }
}

  1. Hallo,

    Nein, Spaß beiseite, ich habe ein Formular wo man auch Dateien uploaden kann. In in der Plausibilität wird dann gefragt welches Format die Datei hat, das klappt auch alles super nur funktioniert das ganze nicht richtig wenn ein Leerzeichen oder Sonderzeichen in dem Dateinamen vorkommt.

    Ich würde diese Überprüfung an deiner Stelle serverseitig machen. Da bietet sich für Perl z.B. File::MMagic an.

    Viele Grüße,

    Stefan

    --
    Lass dir das Tanzen NICHT verbieten
    http://petition-tanzverbot.de.vu
  2. Hallo Marcus.

    Also, statt

    var chr;
    chr = document.job.arbeitsproben.value ;

    kannst du gleich

    var chr = document.job.arbeitsproben.value;

    schreiben.

    if (chr.length > 0){

    Diese Abfrage ist im Grunde genommen nicht nötig, da die RegEx auch greift, wenn ihr ein leerer String übergeben wird.

    var reg = /\b.doc\b|\b.pdf\b|\b.txt\b|\b.ppt\b/i ;
    var ergebnis = reg.test(chr);
    if (ergebnis == false){

    Daraus machen wir

    if(!/^.+.(?:doc|pdf|txt|ppt)$/i.test(chr))

    und der Rest kann so bleiben, wie er ist.

    alert("Falsches Format");
      document.job.arbeitsproben.select();
      document.job.arbeitsproben.focus();
      return false;
      }

    Mir ist nicht ganz klar, was du mit den ganzen \b's in der RegEx erreichen willst, aber ich denke ohne geht es besser.
    Und wie Stefan schon gesagt hat, wäre es sicherlich besser, das ganze serverseitig zu lösen, da man in diesem Fall bei ausgeschaltetem JavaScript keine beliebigen Dateien hochladen könnte.

    Gruß
    Norbert