dateiupload mit perlscript

  • Habe ein HTML Formular über das ich mir den Pfad durch ein Fileupload-Feld hole. Das Formular wird dann ein Script "rd3insert.pl" übergeben das die Informationen zu der Datei in der Datenbank speichert also dann auch den Pfad auf dem Server wo die Datei abgelegt werden soll.

    Der Pfad wird in einem Feld "dateiname" in der Relation "mc_rd3_icd" der Datenbank abgelegt. Also muss der Upload gemacht werden bevor der INSERT in die betroffenen Tabelle gemacht wird.

    hier das bisherige Script.

    use strict;
    use DBI;
    use CGI;
    use WebCenter;

    my (%data) = WebCenter::parseParam();
    my $dbh = WebCenter::connectDB(100);


    # ---------------- Print teil ANFANG -----------------------
    my $p;
    my $xx;
    my $q = new CGI;
    my $next_seq_projekt;
    my $next_seq_autor;
    my $next_seq_icd;


    print "Content-type: text/html\n\n";

    # hier mal alle uebergebenen werte ausgeben:

    my @names = $q->param();
    foreach $p (@names) {

    $xx = $q->param($p);
    print "$p = $xx
    ";
    }
    # ---------------- Print teil ENDE -----------------------

    # Projekt und Autor existieren bereits

    # wenn Projekt und Autor aus der Liste gewählt werden, steht dort ein Wert >= 1 drinnen.
    # wenn nicht gewählt, steht dort nichts drinnen
    # also Abfrage entweder:
    # if ( ($data{vorhandprojekte} >= 1) && ($data{vorhandautor} >= 1) )
    # oder einfach nur:
    # if ( ($data{vorhandprojekte}) && ($data{vorhandautor}) )
    # == heißt, wenn in denbeiden Feldern "etwas" steht

    if ( ($data{vorhandprojekte}) && ($data{vorhandautor}) )
    {

    my $next_seq_projekt;
    my $next_seq_autor;
    my $next_seq_icd;

    print "
    im 1. if - FALL
    ";
    print "
    Gewaehlte Projektnummer = $data{vorhandprojekte}
    ";
    print "
    Gewaehlte Autornummer = $data{vorhandautor}
    ";

    # Eintrag von pid und aid in die Relation mc_rd3_autorprojekt zwecks Verknüpfung der Tabellen mc_rd3_autor und mc_rd3_projekt. -->
    print "Jetzt insert in Tabelle MC_RD3_AUTORPROJEKT
    ";
    $dbh->do(qq{ INSERT
    INTO MC_RD3_AUTORPROJEKT
    (AID,PID)
    VALUES (
    '$data{vorhandautor}',
    '$data{vorhandprojekte}'
    )
    }
    ) or WebCenter::error($DBI::err, undef, undef, $dbh);

    $dbh->commit;

    ($next_seq_icd)= $dbh->selectrow_array('select SEQ_MC_RD3.nextVal FROM DUAL') or WebCenter::error($DBI::err);
    print "Sequence = $next_seq_projekt
    ";

    $dbh->do(qq{ INSERT
    INTO MC_RD3_ICD
    (ICDID,DATUM,AUTORID,VERSION,TITEL,STICHWORT1,STICHWORT2,STICHWORT3,DATEINAME,PROJEKTID)
    VALUES (
    $next_seq_icd,
    '$data{datum}',
    '$data{vorhandautor}',
    '$data{version}',
    '$data{titel}',
    '$data{stichwort1}',
    '$data{stichwort2}',
    '$data{stichwort3}',
    '$data{dateiname}',
    '$data{vorhandprojekte}'

    )
    }
    ) or WebCenter::error($DBI::err, undef, undef, $dbh);


    $dbh->commit;

    }

    if ( ($data{vorhandprojekte}) && (!$data{vorhandautor}) )
    {

    my $next_seq_projekt;
    my $next_seq_autor;
    my $next_seq_icd;

    ($next_seq_autor)= $dbh->selectrow_array('select SEQ_MC_RD3.nextVal FROM DUAL') or WebCenter::error($DBI::err);
    print "Sequence = $next_seq_autor
    ";

    $dbh->do(qq{ INSERT
    INTO MC_RD3_AUTOR
    (AID,NAME,VORNAME)
    VALUES
    (
    $next_seq_autor,
    '$data{name}',
    '$data{vorname}'
    )

    }
    ) or WebCenter::error($DBI::err, undef, undef, $dbh);

    $dbh->do(qq{ INSERT
    INTO MC_RD3_AUTORPROJEKT
    (AID,PID)
    VALUES (
    $next_seq_autor,
    '$data{vorhandprojekte}'
    )
    }
    ) or WebCenter::error($DBI::err, undef, undef, $dbh);

    ($next_seq_icd)= $dbh->selectrow_array('select SEQ_MC_RD3.nextVal FROM DUAL') or WebCenter::error($DBI::err);
    print "Sequence = $next_seq_icd
    ";

    $dbh->do(qq{ INSERT
    INTO MC_RD3_ICD
    (ICDID,DATUM,AUTORID,VERSION,TITEL,STICHWORT1,STICHWORT2,STICHWORT3,DATEINAME,PROJEKTID)
    VALUES (
    $next_seq_icd,
    '$data{datum}',
    $next_seq_autor,
    '$data{version}',
    '$data{titel}',
    '$data{stichwort1}',
    '$data{stichwort2}',
    '$data{stichwort3}',
    '$data{dateiname}',
    '$data{vorhandprojekte}'


    )
    }
    ) or WebCenter::error($DBI::err, undef, undef, $dbh);


    $dbh->commit;

    }


    if ( (!$data{vorhandprojekte}) && ($data{vorhandautor}) )
    {


    my $next_seq_projekt;
    my $next_seq_autor;
    my $next_seq_icd;

    ($next_seq_projekt)= $dbh->selectrow_array('select SEQ_MC_RD3.nextVal FROM DUAL') or WebCenter::error($DBI::err);
    print "Sequence = $next_seq_projekt

    ";

    $dbh->do(qq{ INSERT
    INTO MC_RD3_PROJEKT
    (PID,PROJEKT)
    VALUES
    (
    $next_seq_projekt,
    '$data{projekt}'
    )

    }

    ) or WebCenter::error($DBI::err, undef, undef, $dbh);


    $dbh->do(qq{ INSERT
    INTO MC_RD3_AUTORPROJEKT
    (AID,PID)
    VALUES (
    '$data{vorhandautor}',
    $next_seq_projekt
    )
    }
    ) or WebCenter::error($DBI::err, undef, undef, $dbh);


    ($next_seq_icd)= $dbh->selectrow_array('select SEQ_MC_RD3.nextVal FROM DUAL') or WebCenter::error($DBI::err);
    print "Sequence = $next_seq_icd

    ";

    $dbh->do(qq{ INSERT
    INTO MC_RD3_ICD
    (ICDID,DATUM,AUTORID,VERSION,TITEL,STICHWORT1,STICHWORT2,STICHWORT3,DATEINAME,PROJEKTID)
    VALUES (
    $next_seq_icd,
    '$data{datum}',
    '$data{vorhandautor}',
    '$data{version}',
    '$data{titel}',
    '$data{stichwort1}',
    '$data{stichwort2}',
    '$data{stichwort3}',
    '$data{dateiname}',
    $next_seq_projekt

    )
    }
    ) or WebCenter::error($DBI::err, undef, undef, $dbh);

    $dbh->commit;


    }


    if ( (!$data{vorhandprojekte}) && (!$data{vorhandautor}) )

    {


    my $next_seq_projekt;
    my $next_seq_autor;
    my $next_seq_icd;

    ($next_seq_projekt)= $dbh->selectrow_array('select SEQ_MC_RD3.nextVal FROM DUAL') or WebCenter::error($DBI::err);
    print "Sequence = $next_seq_projekt

    ";

    $dbh->do(qq{ INSERT
    INTO MC_RD3_PROJEKT
    (PID,PROJEKT)
    VALUES
    (
    $next_seq_projekt,
    '$data{projekt}'
    )
    }
    ) or WebCenter::error($DBI::err, undef, undef, $dbh);


    ($next_seq_autor)= $dbh->selectrow_array('select SEQ_MC_RD3.nextVal FROM DUAL') or WebCenter::error($DBI::err);
    print "Sequence = $next_seq_autor
    ";

    $dbh->do(qq{ INSERT
    INTO MC_RD3_AUTOR
    (AID,NAME,VORNAME)
    VALUES
    (
    $next_seq_autor,
    '$data{name}',
    '$data{vorname}'
    )

    }
    ) or WebCenter::error($DBI::err, undef, undef, $dbh);

    $dbh->commit;


    $dbh->do(qq{ INSERT
    INTO MC_RD3_AUTORPROJEKT
    (AID,PID)
    VALUES (
    $next_seq_autor,
    $next_seq_projekt
    )
    }
    ) or WebCenter::error($DBI::err, undef, undef, $dbh);

    $dbh->commit;


    print "Jetzt insert in Tabelle MC_RD3_ICD
    ";

    ($next_seq_icd)= $dbh->selectrow_array('select SEQ_MC_RD3.nextVal FROM DUAL') or WebCenter::error($DBI::err);
    print "Sequence = $next_seq_icd

    ";

    $dbh->do(qq{ INSERT
    INTO MC_RD3_ICD
    (ICDID,DATUM,AUTORID,VERSION,TITEL,STICHWORT1,STICHWORT2,STICHWORT3,DATEINAME,PROJEKTID)
    VALUES (
    $next_seq_icd,
    '$data{datum}',
    $next_seq_autor,
    '$data{version}',
    '$data{titel}',
    '$data{stichwort1}',
    '$data{stichwort2}',
    '$data{stichwort3}',
    '$data{dateiname}',
    $next_seq_projekt

    )
    }
    ) or WebCenter::error($DBI::err, undef, undef, $dbh);


    $dbh->commit;

    }

    print "Der Eintrag des Datensatzes in der Datenbank war erfolgreich!\n

    ";

    $dbh->disconnect;

    print "\Neuer Eintrag
    \n";
    print "\Zur Übersicht
    \n";


    Wie schaut der Teil vor dem INSERT in die Tabelle mc_rd3_icd aus, wo der Dateiupload durchgeführt wird?

    Habe sowas bisher nicht gemacht.

    Gruß

    ledzep