Dateidownload starten

Hallo,

wie kann ich es in PErl hinbekommen, dass bei einem Seitenaufruf
automatisch eine Datei heruntergeladen wird ?

Bitte genaue BEschreibung und QCode, weil es total eilt.

1000mal DNKE !!

wie kann ich es in PErl hinbekommen, dass bei einem
Seitenaufruf
automatisch eine Datei heruntergeladen wird ?

Bitte genaue BEschreibung und QCode, weil es total eilt.

use strict;
use CGI ‚:standard‘;

my $query = new CGI;
print $query->redirect('http://www.somewhere.else/download.zip’);
1;

Das Ganze als script.pl im cgi-bin Verzeichnis abspeichern, chmod 755 script.pl und aufrufen mit http://www.wasauchimmer.de/cgi-bin/script.pl und schon bietet Dir der Browser den Download der Datei download.zip voder Serveradresse http://www.somewhere.else/ an.

Klaus

Es läuft nicht
Hallo Klaus,

vielen Dank für deine Hilfe, doch es geht nicht.
Ich bekommen diese Fehlermeldung:

syntax error at H:\kundenserver\c4\c4_00061501_online\login\perl2.pl line 3, near „use CGI :“
Execution of H:\kundenserver\c4\c4_00061501_online\login\perl2.pl aborted due to compilation errors.

Mein Problem ist ich will alle Deteien zum Download anbieten nicht nur ZIP dateien. Aber dafür muss ich eigentlich einen eigenen Header setzen und ContentDisposition auf attachment setzen …

Ich versuche das ganze mit ASP zu lösen, doch seitem es den IE5.5 SP1 gibt funktioniert meine Komponente nicht richtig.Daher habe ich an PErl gedacht.

Ich bin in perl ein Anfänger, doch so weit ich mit entsinnen kann kann man mit perl solche sachen bewerkställigen.
Ungepasrte Header anlegen usw…

Was kann dann da schief gelaufen sein ?

Klaus

syntax error at
H:\kundenserver\c4\c4_00061501_online\login\perl2.pl line 3,
near „use CGI :“
Execution of
H:\kundenserver\c4\c4_00061501_online\login\perl2.pl aborted
due to compilation errors.

Es muss auch (siehe vorheriges Posting)
use CGI ‚:standard‘;
(single Quote) heissen.

Mein Problem ist ich will alle Deteien zum Download anbieten
nicht nur ZIP dateien. Aber dafür muss ich eigentlich einen
eigenen Header setzen und ContentDisposition auf attachment
setzen …

Das geht mit fast allen Dateien mit dem angebenen Verfahren, da nichts anderes als ein redirect gemacht wird - so als ob jemand einen Link anklicken würde.

Hallo Klaus,

Shit diese Fehlermeldung kam weil dort kein Perl installiert war (der Verantwortliche dafür wurde nun exekutiert) aber nun ist mein altes Problem wieder da.

Er versucht die die aktuelle PErl seite runterzuladen und nicht mein Dokument.

Was ist da nun kapput ?

thx

Shit diese Fehlermeldung kam weil dort kein Perl installiert
war (der Verantwortliche dafür wurde nun exekutiert) aber nun
ist mein altes Problem wieder da.

Er versucht die die aktuelle PErl seite runterzuladen und
nicht mein Dokument.

Ich würde sagen, dort ist der Server nicht oder nicht richtig für Perl installiert … :frowning:
Stimmt die Shebang Zeile (#!/usr/…perl in Deinem Script und die Endung?
Eventuell muss sie .cgi heissen und nicht .pl und das Script muß ggf. im „richtigen“ Verzeichnis liegen …

Klaus

Ich packs nicht mehr *g*

Es läuft soweit,dass er mir die eigentliche PERl Seite runterladen will, aber nicht das Dokument,welches ich Ihm
anweise runterzuladen.

Ich arbeite auf einem WINTEL 2000 rechner und nutze IE 5.5 SP1

PS: Wenn ich doch eine Datei mi selben VErzeichniss runterladen will, reicht doch ein relativer Pfad, oder muss dort immer ein absoluter stehen ?

Was geht da blos schief ?

Es läuft soweit,dass er mir die eigentliche PERl Seite
runterladen will, aber nicht das Dokument,welches ich Ihm
anweise runterzuladen.

Dann ist Dein Webserver immer noch nicht korrekt für Perl konfiguriert

Ich arbeite auf einem WINTEL 2000 rechner und nutze IE 5.5 SP1

naja, es gib Schlimmeres … wenig, aber … :smile:

PS: Wenn ich doch eine Datei mi selben VErzeichniss
runterladen will, reicht doch ein relativer Pfad, oder muss
dort immer ein absoluter stehen ?

hmmm, ich denke bei einer Redirection muß eine absolute URL angeben werden.

Klaus

FAST (wir kommen der Sache schon näher)
Klaus,

ich will DIr nicht auf den Senkel gehen *g

Es stimmt. Aus unerklärlichen Gründen war bei meinem IIS die .pl EXtension nicht mehr da !
ICh weiß wirklich nicht warum. ICh habe doch ein Gästebch geperlt und das hat jetzt auch nicht gefuntzt.

So nun habe ich die .pl wieder reingeschrieben und habe ein kleines Problem.

Ich habe Ihm eine ppt Also PowerPoint datei angeboten und die
macht er im Browser auf und nicht als download.

Das ist genau der Punkt an dem das ContentDispositions Problem beginnt. Er will alles anzeigen und nichts runterladen.

Ich glaube es muss nun die ganze Pallete an Headern ausprobiert werden:
ContentType: application/x-madownload
ContentType: application/octet-stream (für den Netscape)

Läd dein IE .doc herunter (wenn Du word installiert hast) oder öffnet er es im Browser ?

Es stimmt. Aus unerklärlichen Gründen war bei meinem IIS die
.pl EXtension nicht mehr da !

Sach ich doch :smile:

Ich habe Ihm eine ppt Also PowerPoint datei angeboten und die
macht er im Browser auf und nicht als download.

Yep, das ist so

Das ist genau der Punkt an dem das ContentDispositions Problem
beginnt. Er will alles anzeigen und nichts runterladen.

yep, wenn die Extensions dem Server (der schickt den Content Header) und Browser bekannt sind, dann verfährt er so

Läd dein IE .doc herunter (wenn Du word installiert hast) oder
öffnet er es im Browser ?

Ja leider öffnet er es …

Versuch mal Folgendes:
print $query->redirect(-uri=>‚http://www.somewhere.de/document.ppt‘,
-nph=>1);

The -nph parameter, if set to a true value, will issue the correct headers to work with a NPH (no-parse-header) script. This is important to use with certain servers, such as Microsoft Internet Explorer, which expect all their scripts to be NPH.

Klaus

Klaus Du hast nun bei mir 99 Punkte !!!

aber leider kommt dies hier dabei raus:

The specified CGI application misbehaved by not returning a complete set of HTTP headers. The headers it did return are:

Can’t call method „redirect“ on an undefined value at c:\inetpub\wwwroot\Test\perl.pl line 23.

Ich habe alles auskommentiert außer den zwei Zeilen:

print $query->redirect(-uri=>‚http://localhost/Test/document.ppt‘,
-nph=>1);

Was tut sich bei DIR ?

Klaus Du hast nun bei mir 99 Punkte !!!

danke

aber leider kommt dies hier dabei raus:

The specified CGI application misbehaved by not returning a
complete set of HTTP headers. The headers it did return are:

Can’t call method „redirect“ on an undefined value at
c:\inetpub\wwwroot\Test\perl.pl line 23.

Ich habe alles auskommentiert außer den zwei Zeilen:

Die Fehlermeldung ist klar wenn Du alles auskommentiert hast.
$query ist vermutlich jetzt undefiniert.

perldoc CGI
solltest Du Dir auf jeden Fall mal anschauen …

Bin icvh nicht ein HELD *g*

#!/usr/bin/perl

use strict;
use CGI ‚:standard‘;
my $query = new CGI;
print $query->redirect(-uri=>'http://192.168.0.139/Test/test.pdf’,-nph=>1);

Hab es wieder aktiviert, aber er gibt es immer noch im Browser aus. Funktioniert es denn bei DIR ?
(Man merkt dass ich an dem Problem schon drei Tage sitze und langsam verzweifel)

Bleib Drann Klaus und sage mir was nun Sache ist mit dem Teil ?

Hab es wieder aktiviert, aber er gibt es immer noch im Browser
aus. Funktioniert es denn bei DIR ?

Nö, weil ich weder einen IIS hier habe, noch einen MS IE *3-Kreuzzeichen-mach*

(Man merkt dass ich an dem Problem schon drei Tage sitze und
langsam verzweifel)

Bleib Drann Klaus und sage mir was nun Sache ist mit dem Teil

Ich tippe wir müssen die Sache anders angehen - da hilft nix.
Versuch mal folgendes:

my $file = '/absoluter\_pfad\_zum\_file/test.ppt';
print "Content-type: application/x-msdownload\n\n";
open(FILE,") { 
 print $\_; 
}
close(FILE);

Wichtig is bei Windoof das binmode auf den FILEHANDLE und STDOUT
Obiges muß eigentlich funktionieren. Wenn nicht, dann müssen wir alles Weitere auf Morgen vertagen …

Klaus

WAR NIX(leider) wir schauen morgen/ümorgen mal
Ganz ganz herzliches Dankeschööön Klaus !!

Leider ging es nicht aber ich kämpfe weiter.
Leider werde ich morgen erst Nachmittag wieterhacken, weil
ich Vormittags bei Kunden bin.

Danlke DIR !

Folgendes Script funktioniert bei mir (nach längerem Studium von Newsgroups)
(getested mit NS, Opera und MSIE *schüttel*)

Klaus

#!/usr/local/bin/perl

use strict;

my $filename = 'test.ppt';
my $file = "/user/ks/www/cgi-bin/$filename";
open(FILE,"};
close(FILE);

1;

Neuer Tag neues Glück *g*
Hi Klaus,
ich hoffe Du hattest heute ein gutes Frühstück und keine schlaflose Nacht.

Leider Funktioniert es bei mir nicht.
Er versucht wie schon seit tagen das aktuelle Skript runterzuladen. Ich war auch brav und habe die / in \
umgewandelt aber es tut sich nichts.
my $file = „c:\Inetpub\wwwroot\Test\test.pdf“;

Auch habe ich es mit ADO Stream Objekten versucht. Er findet die Datei liest sie auch binär aber sobalt ich es als Attachment senden will läd er die aktuelle seite runter. Wenn keine Head Dosposition angegeben ist dann öffnet er es in Dokument.

Bei der MS Hotline habe ich auch versucht Infos zu bekommen.
In der MS Knowledgebase steht ein bekanntes Problem
mit IE 5.5 SP1 und Content-Disposition aber wie man es umgeht steht da nicht. (typisch)

Ich habe mir ein Ziel gesetzt in spätestens drei Jahren kein MS Produkt mehr anzufassen. Doch es gibt Situationen da muss man seine Pläne ändern und seiner Zeit vorraus sein.
Also ab morgen nix Microsoft Mr.ates
Das WINTEL ZEug geht mir an die E… !!!

Nun habe ich eine Notlösung und zwar eine Delpi EXE die per Parameterübergabe eine Datei Downloadet. Doch mein Kollege muss erst noch einige Sicherheitsfeatures einbauen, sonst kommt mir das Ding nicht auf den Server.

Ich bin mit meinem Latein am Ende !

Leider Funktioniert es bei mir nicht.

Was funktioniert nicht?

Bevor wir eine Overflow hier im Forum erzeugen - alles weiter per „Private Mail“ …