Der folgende Beitrag wurde am 22. 07. 2002, 12:29 Uhr von LordRayden veröffentlicht.
Hi!
Hab folgendes Problem:
Ich verwende ein Perlscript um Dateien über Formulare auf meinen Webserver zu laden. Das perlscript hab ich glaub ich eh irgendwo aus selfhtml herauskopiert.
Die ganze Sache funktioniert grundsätzlich auch tadellos. Alle files kommen am server an und sind vollständig.
Allerdings etwas zu vollständig:
Wenn ich Windows-Media-Videos rauflade dann sind sie im vergleich zum original um 1 byte zu gross.
Ich kann die Videos im Player zwar problemlos abspielen, aber der WindowsMedia-StreamingServer ist etwas sensibler und sagt das der Abschluss der Datei nicht richtig ist.
Also:
Wie kriege ich das überflüssige Byte wieder raus?
Wie kann ich verhindern das es überhaupt geschrieben wird?
Warum ist es überhaupt da?
Hier der Auszug aus dem Code:
# Schreibe die Datei auf den Server
# Die Routine gibt die Anzahl an Bytes zurueck, die es geschrieben hat.
sub writefile
{
local *DAT;
my $self = shift;
my $fieldname = shift;
if($fieldname eq "")
{ return undef; }
my $filename = shift || $formdata->{$fieldname}->{"filename"};
open(DAT,">".$filename) or die("Fileupload.pm: Error: $!");
binmode DAT;
print DAT $formdata->{$fieldname}->{"content"};
close(DAT);
return length($formdata->{$fieldname}->{"content"});
}
Der folgende Beitrag wurde am 22. 07. 2002, 15:16 Uhr von Ed X veröffentlicht.
Hi,
also deine Fehlerbeschreibung hilft leider nicht so wirklich viel :(
Ich vermute den fehler in der Sturktur der form/multipart - Architektur in Tat-
einheit mit dem CRLF-Problem. Also mal noch ein paar angaben wären notendig:
1. Betriebsystem des Uploadrechners (auch der Client ist wichtig, da mozilla
selbst unter Win den Zeilenumbruch löblicherweise auf \n reduziert)
2. Betriebsystem des Rechners auf dem das Perlscript läuft (die Scripte sind
normalerweise auf POSIX optimiert, aber bei dier könnte das ein NT-Server
sein)
3. Zum Bujagen mal folgendes machen:
- kleines Video-File erstellen / speichern
- per fileupload hochjagen
- per _FTP_ im _binary_ dowloaden
- per Hexeditor vergleichen
Nachsehen ob das Zeichen(8bit/1byte) vorne oder hinten dran ist. Sequenz
isolieren und fesstellen was es ist (ich vermute und hoffe es ist ein CR
hinten dran. Dann reich ein simples chop (very quick 'n dirty))
bye eddie
Der folgende Beitrag wurde am 22. 07. 2002, 16:00 Uhr von LordRayden veröffentlicht.
> Hi,
> also deine Fehlerbeschreibung hilft leider nicht so wirklich viel :(
sorry!
> Ich vermute den fehler in der Sturktur der form/multipart - Architektur in Tat-
> einheit mit dem CRLF-Problem. Also mal noch ein paar angaben wären notendig:
> 1. Betriebsystem des Uploadrechners (auch der Client ist wichtig, da mozilla
> selbst unter Win den Zeilenumbruch löblicherweise auf \n reduziert)
Win2000 Professional SP2, InternetExplorer
> 2. Betriebsystem des Rechners auf dem das Perlscript läuft (die Scripte sind
> normalerweise auf POSIX optimiert, aber bei dier könnte das ein NT-Server
> sein)
Win2000 Server SP2
> 3. Zum Bujagen mal folgendes machen:
> - kleines Video-File erstellen / speichern
> - per fileupload hochjagen
> - per _FTP_ im _binary_ dowloaden
> - per Hexeditor vergleichen
> Nachsehen ob das Zeichen(8bit/1byte) vorne oder hinten dran ist. Sequenz
> isolieren und fesstellen was es ist (ich vermute und hoffe es ist ein CR
> hinten dran. Dann reich ein simples chop (very quick 'n dirty))
hast recht!
Ab sofort nenn ich dich Gott!
Falls du zufällig mal in Pinkafeld (Österreich) vorbeikommst hast ein Bier bei mir gut *g*
Aber: fällt dir eine nich so schmutzige Lösung wie das chop ein?
Muss aber nicht sein, immerhin läufts ja jetzt.
> bye eddie
lg LordRayden
PS: danke nochmal Gott! Falls du einen Fanclub hast, wo kann ich mich anmelden?
Der folgende Beitrag wurde am 22. 07. 2002, 16:38 Uhr von Ed X veröffentlicht.
Hallo,
> > also deine Fehlerbeschreibung hilft leider nicht so wirklich viel :(
> sorry!
alles nicht so schlimm
> > 1. Betriebsystem des Uploadrechners (auch der Client ist wichtig, da mozilla
> > selbst unter Win den Zeilenumbruch löblicherweise auf \n reduziert)
> Win2000 Professional SP2, InternetExplorer
> > 2. Betriebsystem des Rechners auf dem das Perlscript läuft (die Scripte sind
> > normalerweise auf POSIX optimiert, aber bei dier könnte das ein NT-Server
> > sein)
> Win2000 Server SP2
nun das hat sich damit erledigt...
> hast recht!
> Ab sofort nenn ich dich Gott!
ist nicht nötig :)
> Falls du zufällig mal in Pinkafeld (Österreich) vorbeikommst hast ein Bier bei mir gut *g*
ist vorgemerkt :)
> Aber: fällt dir eine nich so schmutzige Lösung wie das chop ein?
nun es gibt einen unterschied zwischen chop und chomp. zum schnell nachlesen:
http://www.webclass.ru/show.php3?tip=74
du könntes also $/ deklarieren und dann chomp anwenden, da bei upload von einem
anderen client (mozilla z.b.) das CR nicht mitgesendet wird.
Am besten wäre es die multipart-parsing routine in fileupload.pm zu verbessern
oder sich den Artikel von CK reinzuziehen http://aktuell.de.selfhtml.org/artikel/cgiperl/file-upload/index.htm, um den
Upload über CGI.pm zu erledigen. Irgenwo im Forum geistert auch noch eine
fileupload routine rum, die wie auch CGI.pm darauf basiert, die CRLF-Sequenz
zu bestimmen, um dann das Multipart-Form korrekt zu parsen. Sie ist halt nur
kleiner als CGI.pm
> Muss aber nicht sein, immerhin läufts ja jetzt.
Probier bitte mal das File mit mozilla hochzujagen, das könnte bei der
Verwendung von chop Ärger stiften!
bye eddie
> PS: danke nochmal Gott! Falls du einen Fanclub hast, wo kann ich mich anmelden?
... mir ist nix bekannt :)
© 1998-2013 SELFHTMLImpressumSoftware: Classic Forum 3.4