Datenaustausch zw. 2 Scripten

Datenaustausch zw. 2 Scripten

am 04.03.2006 09:16:25 von Heiko Rompel

Moin,

wie löse ich folgendes am besten:

Ich habe ein "News"-Script und ein Upload-Script.

Beide Teile funktionieren als einzelne Scripte wie gewünscht.
Jetzt, möchte ich aber folgendes realisieren und weiß nicht
wie ich es angehen soll:

Das News-Script soll einen "Button" bekommen, der es ermöglicht
ein Bild mittels des Upload-Scriptes auf den Server zu übertragen.
Wenn das Upload-Script fertig ist, soll es dem News-Script
den Dateienamen und den Speicherort der Bildes übermitteln.

Tja, und diesen Datenaustausch weiß ich nicht zu realisieren.

In "CGI - Programmierung mit PERL" von O'Reilly habe ich auch nichts
gefunden (obwohl es mir sehr geholfen hat).

MfG
Heiko

Re: Datenaustausch zw. 2 Scripten

am 04.03.2006 11:45:08 von Christian Garbs

Mahlzeit!

Heiko Rompel wrote:

> Das News-Script soll einen "Button" bekommen, der es ermöglicht
> ein Bild mittels des Upload-Scriptes auf den Server zu übertragen.
> Wenn das Upload-Script fertig ist, soll es dem News-Script
> den Dateienamen und den Speicherort der Bildes übermitteln.

Variante einfach:

Im News-Skript:
$dateiname=`update-skript.pl`;

Im Update-Skript:
print "$dateiname\n";
(und sonst keine Ausgaben)

Ansonsten gibt es zig verschiedene Möglichkeiten, Du kannst z.B. mal
in `perldoc perlipc` gucken.

Gruß,
Christian
--
sub _{print"\n"}_;for(;$s<9;++$s){$_='1E2018201E00001E2018201E00001E2018201'
..'E002020001C2222221400005CA2A2A27C02001C2222221C20003E0402 02201F2422221C00'
..'242A2A2A12002020001C2222221F20001C2A2A2A0C';while(s;(..); ;){printf'%c',hex
$1&1<<$s?40:32}_}$_=':::Christian Garbs:',y;:;\t;;print;_;_

Re: Datenaustausch zw. 2 Scripten

am 04.03.2006 11:46:33 von Heiko Rompel

Moin,

also in meinem OP habe ich das Problem doch etwas
verwirrt dargestellt.

Also der Ablauf wie folgt sein:

Perl-Script erzeugt ein HTML-Formular.
In dem HTML-Formular gibt es einen UPLOAD-Button.
Dieser Button ruft das Upload-Script auf.

Wenn das Formular abgeschickt wird,
wird das Perl-Script wieder aufgerufen und
wertet das Formular aus.

So weit kein Problem, aber wie komme ich
an den Dateinamen des Upload-Scriptes?

MfG
Heiko

Re: Datenaustausch zw. 2 Scripten

am 04.03.2006 11:55:58 von Frank Seitz

Heiko Rompel wrote:

> also in meinem OP habe ich das Problem doch etwas
> verwirrt dargestellt.

Ja, könnte man so sagen.

> Also der Ablauf wie folgt sein:
>
> Perl-Script erzeugt ein HTML-Formular.
> In dem HTML-Formular gibt es einen UPLOAD-Button.
> Dieser Button ruft das Upload-Script auf.

Verständlich.

> Wenn das Formular abgeschickt wird,
> wird das Perl-Script wieder aufgerufen und
> wertet das Formular aus.

Unverständlich. Meinst Du, Du redirectest am
Ende des Upload an das ursprüngliche Formular?

> So weit kein Problem, aber wie komme ich
> an den Dateinamen des Upload-Scriptes?

Mittels CGI-Parameter? Über eine Datenbank?

Grüße
Frank
--
Dipl.-Inform. Frank Seitz; http://www.fseitz.de/
Anwendungen für Ihr Internet und Intranet
Tel: 04103/180301; Fax: -02; Industriestr. 31, 22880 Wedel

Re: Datenaustausch zw. 2 Scripten

am 04.03.2006 12:01:08 von Heiko Rompel

Hallo,

"Frank Seitz" schrieb:

>> Wenn das Formular abgeschickt wird,
>> wird das Perl-Script wieder aufgerufen und
>> wertet das Formular aus.
>
> Unverständlich. Meinst Du, Du redirectest am
> Ende des Upload an das ursprüngliche Formular?
Nein, mittels SUBMIT und POST wird das Ursprungsscript mit
Parameter aufgerufen.

>> So weit kein Problem, aber wie komme ich
>> an den Dateinamen des Upload-Scriptes?

> Mittels CGI-Parameter?
Ja? Aber wie?

> Über eine Datenbank?

Für einen einzelnen Filenamen?
Einwenig übertrieben oder?

MfG
Heiko

Re: Datenaustausch zw. 2 Scripten

am 04.03.2006 12:03:18 von Heiko Rompel

Hallo,

"Christian Garbs" schrieb:

> Variante einfach:
>
> Im News-Skript:
> $dateiname=`update-skript.pl`;
>
> Im Update-Skript:
> print "$dateiname\n";
> (und sonst keine Ausgaben)

???

> Ansonsten gibt es zig verschiedene Möglichkeiten, Du kannst z.B. mal
> in `perldoc perlipc` gucken.

Also die Perldoc gibt zwar viele Antworten, aber leider in einer Sprache
die ich nicht fließend spreche.

MfG
Heiko

Re: Datenaustausch zw. 2 Scripten

am 04.03.2006 12:07:02 von Frank Seitz

Heiko Rompel wrote:
> "Frank Seitz" schrieb:
>>
>>Unverständlich. Meinst Du, Du redirectest am
>>Ende des Upload an das ursprüngliche Formular?
>
> Nein, mittels SUBMIT und POST wird das Ursprungsscript mit
> Parameter aufgerufen.

Aber nicht am Ende des Upload.
Was passiert da?

Grüße
Frank
--
Dipl.-Inform. Frank Seitz; http://www.fseitz.de/
Anwendungen für Ihr Internet und Intranet
Tel: 04103/180301; Fax: -02; Industriestr. 31, 22880 Wedel

Re: Datenaustausch zw. 2 Scripten

am 04.03.2006 12:29:13 von Heiko Rompel

Hallo,

> Aber nicht am Ende des Upload.
> Was passiert da?
Im Moment nichts, weil ich nicht was da passieren soll.

MfG
Heiko

Das Upload-Script sieht so aus:
==========================

#!/usr/bin/perl -w

use strict;
use CGI; # Modul fuer CGI-Programme
use File::Basename;

my $cgi = new CGI; # neues Objekt erstellen

# Content-type fuer die Ausgabe
print $cgi->header(-type => 'text/html');

# die datei-daten holen
my $file = $cgi->param("myfile");
(my $filename,my $path) = fileparse $file;
$filename =~ s/([^\w.-])/_/g;
$filename =~ s/^[-.]+//;

# Dateiendungen überprüfen
# Splitten des Dateinamens in Dateiname und Endung
(my $bildname,my $endung) = split(/\./, $filename);
$endung = lc($endung);
if (($endung eq "jpg") or ($endung eq "jpeg") or ($endung eq "bmp")){
# dateinamen erstellen und die datei auf dem server speichern
open (DAT,"> ./upload/$filename") or die 'Error processing file: ',$!;
# Dateien in den Binaer-Modus schalten Wichtig für nicht LINUX-Systeme
binmode $file;
binmode DAT;
my $data;
while(read $file,$data,1024) {
print DAT $data;
}
close DAT;
print <<"__HTML__";


Fileupload


Die Datei $file wurde erfolgreich hochgeladen.



Die Datei $bildname mit der Endung $endung wurde erfolgreich auf dem
Server gespeichert.




__HTML__

}
else{
print <<"__HTML__";


Fileupload


Fehler !!!



Die Datei ist keine .JPG oder .BMP-Datei.




__HTML__


}

Re: Datenaustausch zw. 2 Scripten

am 04.03.2006 16:17:42 von Frank Seitz

Heiko Rompel wrote:
>
>>Aber nicht am Ende des Upload.
>>Was passiert da?
>
> Im Moment nichts, weil ich nicht was da passieren soll.

[Code]

Dann ist da also Ende der Fahnenstange. Das ist wenig
sinnvoll, irgendwie soll es mit der Anwendung
danach doch weitergehen, oder nicht?

Grüße
Frank
--
Dipl.-Inform. Frank Seitz; http://www.fseitz.de/
Anwendungen für Ihr Internet und Intranet
Tel: 04103/180301; Fax: -02; Industriestr. 31, 22880 Wedel

Re: Datenaustausch zw. 2 Scripten

am 05.03.2006 08:32:15 von Heiko Rompel

Hallo,

"Frank Seitz" schrieb:

> [Code]
>
> Dann ist da also Ende der Fahnenstange. Das ist wenig
> sinnvoll, irgendwie soll es mit der Anwendung
> danach doch weitergehen, oder nicht?

Eigentlich soll es danach wieder zurück ins Formular
gehen und wenn das abgeschickt wird, geht es im NEWS-Script weiter.
Nur wie sorge ich dafür, das ich an den Filenamen komme,
wenn ich das Upload-Script beende und wieder im Formular bin?

MfG
Heiko

Re: Datenaustausch zw. 2 Scripten

am 05.03.2006 11:23:49 von hjp-usenet2

Heiko Rompel wrote:
> "Frank Seitz" schrieb:
>> Dann ist da also Ende der Fahnenstange. Das ist wenig
>> sinnvoll, irgendwie soll es mit der Anwendung
>> danach doch weitergehen, oder nicht?
>
> Eigentlich soll es danach wieder zurück ins Formular
> gehen und wenn das abgeschickt wird, geht es im NEWS-Script weiter.
> Nur wie sorge ich dafür, das ich an den Filenamen komme,
> wenn ich das Upload-Script beende und wieder im Formular bin?

Mehrere Möglichkeiten:

1) Du speicherst den Filenamen irgendwo (Datenbank, File, Cookie,
Parameter im URL) und machst ein Redirect auf das Formular.

2) Du verwendest das gleiche Script für das Anzeigen des Formulars und
den Upload, dann kannst das Script gleich wieder das Formular mitsamt
dem Filenamen ausgeben.

3) Du verlässt das Formular gar nicht erst, sondern machst den
Fileupload mittels JavaScript im Hintergrund. Das hat dann aber mit
Perl noch weniger zu tun.

Ist Geschmackssache - manche Leute mögen viele kleine Scripts, die
jeweils eine Sache machen, andere ein Monsterscript, das alles macht -
und hängt natürlich auch von der konkreten Anwendung ab. Wozu das ganze
gut sein soll, hast Du uns ja nicht verraten.

hp

--
_ | Peter J. Holzer | Löschung von at.usenet.schmankerl?
|_|_) | Sysadmin WSR/LUGA |
| | | hjp@hjp.at | Diskussion derzeit in at.usenet.gruppen
__/ | http://www.hjp.at/ |

Re: Datenaustausch zw. 2 Scripten

am 05.03.2006 12:00:58 von Peter Ehrenberg

"Heiko Rompel" writes:

> [...] Nur wie sorge ich dafür, das ich an den Filenamen komme,
> wenn ich das Upload-Script beende und wieder im Formular bin?

Des Upload-Script sendet dem Browser eine Redirection. Als neue
Location lieferst du die Url des Formulars plus Dateinamen als
Parameter.

Peter
--
Dipl.-Ing. Peter Ehrenberg Tel.: +49 40 756604-40
Auf der Höhe 29 Netz: http://dipe.de/
21109 Hamburg Perl · Oracle · Linux · Netzwerk
Germany Softwareentwicklung · Installation · Administration

Re: Datenaustausch zw. 2 Scripten

am 05.03.2006 12:35:00 von Heiko Rompel

Hallo,

> 1) Du speicherst den Filenamen irgendwo (Datenbank, File, Cookie,
> Parameter im URL) und machst ein Redirect auf das Formular.

Da wäre das speichern im File wahrscheinlich in diesem Fall
die beste Variante.


> 2) Du verwendest das gleiche Script für das Anzeigen des Formulars und
> den Upload, dann kannst das Script gleich wieder das Formular mitsamt
> dem Filenamen ausgeben.

Hmm, das wäre auch noch eine Idee.
Ist sogar noch besse als 1).


> 3) Du verlässt das Formular gar nicht erst, sondern machst den
> Fileupload mittels JavaScript im Hintergrund. Das hat dann aber mit
> Perl noch weniger zu tun.

Nein, im mag JavaScript nicht, weil es durch den User abgeschaltet werden
kann.


> Ist Geschmackssache - manche Leute mögen viele kleine Scripts, die
> jeweils eine Sache machen, andere ein Monsterscript, das alles macht -
> und hängt natürlich auch von der konkreten Anwendung ab.

Ich mag es lieber einfach. Wenn das alles mit einem Script geht, dann
nutze ich diese Variante und wenn mehrere Scripte die beste Lösung sind,
dann halt mit mehreren.

> Wozu das ganze gut sein soll, hast Du uns ja nicht verraten.

Ein NEWS-Sript für eine D.A.U.- Gruppe.
Die sollen nur News (mit oder ohne BILD) erstellen können ohne
am Layout der Seite rumspielen zu können.
Ein CMS wäre mir da zu mächtig und zu aufwendig.

MfG
Heiko

Re: Datenaustausch zw. 2 Scripten

am 05.03.2006 12:58:06 von Heiko Rompel

Hallo,

"Peter Ehrenberg" schrieb:

> Des Upload-Script sendet dem Browser eine Redirection. Als neue
> Location lieferst du die Url des Formulars plus Dateinamen als
> Parameter.

Aber dann müßte ich dem Upload-Script beim Aufruf, alle Informationen
die das News-Formular schon enthält mitsenden,
Damit das Upload-Script diese Daten beim Redirect wieder mitsenden
kann - oder?

MfG
Heiko

Re: Datenaustausch zw. 2 Scripten

am 05.03.2006 15:33:20 von Peter Ehrenberg

"Heiko Rompel" writes:

> "Peter Ehrenberg" schrieb:
>
> [...] Aber dann müßte ich dem Upload-Script beim Aufruf, alle
> Informationen die das News-Formular schon enthält mitsenden, Damit
> das Upload-Script diese Daten beim Redirect wieder mitsenden kann -
> oder?

Letztlich hast du bei einer Web-Anwendung kaum eine andere
Möglichkeit. Hast du in deinem News-Formular zu viele Daten, als das
man sie auf eine Url packen kann, dann muss das Upload-Script diese
in einer Datei speichern und beim Redirect deren Name zum
News-Formular transportieren, das dann die Datei ausliest.

Wenn du an Stelle des Redirect am Ende deines Upload-Script das
News-Formular erzeugst, kannst du dir das alles sparen. Allerdings
steht danach der Browser mit seiner Url auf der des Upload-Scripts und
nicht (wie erwartet) auf der des News-Formulars. Das verwirrt
möglicherweise den Benutzer, seine Bookmarks und deine Anwendung, wenn
der Benutzer durch Reload, das Upload-Script immer wieder und wider
aufruft.

Diese Schwierigkeiten hättest du nicht, wenn du das File-Upload-Feld
mit in dein News-Formular aufnähmst.

Peter

--
Dipl.-Ing. Peter Ehrenberg Tel.: +49 40 756604-40
Auf der Höhe 29 Netz: http://dipe.de/
21109 Hamburg Perl · Oracle · Linux · Netzwerk
Germany Softwareentwicklung · Installation · Administration