Willkommen Gast, Anmelden

Active Extension für FoxPro Suche im wiki »

Der Dateiupload wurde wesentlich verbessert in der AFPX und hat auch noch ein paar Spezialitäten eingebaut.

  • Die Größe der Dateien ist nicht auf 16MB begrenzt. Siehe: web.config wegen Größenbeschränkung
  • Es können gleichzeitig mehrere Dateien gemischt mit Formulardaten und Querystrings übertragen werden.

Sie müssen beim Upload von großen Dateien ein paar Einstellungen beachten.
  • Maximale Anzahl Bytes bei IIS7 in der web.config einstellen.
  • busytimeout und releasetimeout in der AFPXISAPI groß genug wählen. Dies ist von ihrem Webserver und der Datenleitung abhängig.

Um Dateien an den Server zu schicken muss der enctype auf multipart/form-data gesetzt werden. Hier ein Beispiel eines Formulares, welches eine Datei an eine Dateiuploadziel.afp sendet
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Dateiupload</title>
</head>
<body>
    <h1>Dateiupload</h1>
    <form action="Dateiuploadziel.afp" method="post"  enctype="multipart/form-data" >
        <p> Bitte wählen sie eine Datei aus und klicken sie dann auf [Hochladen]</p>
        <p><input  size="60" name="diedatei" id="File1" type="file" /></p>
        <p><input name="derhochladenbutton" id="Submit1" type="submit" value="Hochladen" /></p>
    </form>
</body>
</html>

Wichtig ist dabei der enctype

enctype="multipart/form-data" >

Weiters die richtige Benennung mit dem "name" Parameter

<input size="60" name="diedatei" id="File1" type="file" />

Sobald man eine Datei ausgewählt hat und auf Hochladen klickt, wird die Dateiuploadziel.afp gestartet und bekommt die Daten der Datei in Fox.aFilevar geliefert.

Nehmen wir an, es handelt sich um eine film.avi wird die Fox.aFilevar ungefähr so aussehen:

nametempfileunusedorigname
diedateiC:\afpxdll\_3CP0VE649.tmpFilm.aviFilm.avi

der erste Eintrag ist der name-Parameter.
der zweite Eintrag ist die Datei in Form eines Temp-Files.
der dritte Eintrag ist meistens leer und im Moment noch nicht benutzt.
der vierte Eintrag ist der echte Name, also in diesem Fall Film.avi.

Es gibt nun 2 Methoden um auf die Daten zuzugreifen.
  • Fox.GetFileVar
    liefert den temporären Namen unter dem die Datei abgespeichert wurde. In unserem Fall wäre das fox.getfilevar("diedatei")
  • Fox.GetFileName
    liefert den original Namen der Datei. In unserem Fall wäre das fox.getfilename("diedatei")

da die Temp-Datei immer weggelöscht wird, nachdem die Verarbeitung beendet ist, muss man die übertragene Datei auch ordentlich abspeichern. zB mit copy file (fox.getfilevar("diedatei")) to ("c:\meineigenerpfad\"+fox.getfilename("diedatei"))

Es versteht sich von selbst, dass mehrere Zeilen in der Fox.aFilevar vorhanden sind, wenn mehrere Dateien gleichzeitig übertragen werden.

Edit | Alle | Kategorien | Navigation Pfad | Administration | Files
WikiSoftware (c) by Screwturn Wiki