Likes Likes:  0
Resultaten 1 tot 5 van de 5
Geen
  1. #1
    henq
    [perl] upload met CGI.pm , bijna goed..
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    [perl] upload met CGI.pm , bijna goed..

    ...maar nog niet helemaal :-)

    ik gebruik dit stukje:


    my $filename = $cgiobj->param('f_upload');

    if ($filename) {

    my $fp = $filename;
    $fp =~ s/[ \.\':\\]/_/g;

    my $localf = "/private/tmp/$fp";
    open UPLD, ">$localf" or die $!;

    my $buffer;
    my $read;
    while ($read = read($filename, $buffer, 1024)) {
    print UPLD $buffer;
    }

    close UPLD;
    }

    Ik heb me gek geGoogled, maar bovenstaande zou moeten werken.

    De file wordt gemaakt na de form POST, maar de file blijft 0 bytes groot.
    Iemand een idee ?

    (OSX, dus geen binmode nodig; ook (<filename>) variant geprobeerd; een
    subtiel rechten probleem?)

    bvhd!

    henk



  2. #2
    henq
    [perl] upload met CGI.pm , bijna goed..
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: [perl] upload met CGI.pm , bijna goed..


    ikzelf schreef in bericht news:418cbcef$1$78749$e4fe514c@news.xs4all.nl...
    > ..maar nog niet helemaal :-)
    >
    > ik gebruik dit stukje:
    >
    >
    > my $filename = $cgiobj->param('f_upload');
    >
    > ....


    Gevonden. De nieuwe versie van CGI.pm werkt een stukje simpeler, met
    upload():

    my $filename = $cgiobj->param('f_upload');

    if ($filename) {

    my $fp = $filename;
    $fp =~ s/[ \.\':\\]/_/g;

    my $localf = "/private/tmp/$fp";
    open UPLD, ">>$localf" or die $!;

    my $F = $cgiobj->upload('f_upload'); <<<<
    while (<$F>) {
    print UPLD;
    }

    close UPLD;
    }



  3. #3
    John Bokma
    [perl] upload met CGI.pm , bijna goed..
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: [perl] upload met CGI.pm , bijna goed..

    "henq" <henq _ replace 0 by o wrote:

    > ..maar nog niet helemaal :-)


    Gebruik CGI.pm

    > ik gebruik dit stukje:
    >
    >
    > my $filename = $cgiobj->param('f_upload');
    >
    > if ($filename) {
    >
    > my $fp = $filename;
    > $fp =~ s/[ \.\':\\]/_/g;


    Tip: fix geen dingen, maar check of het valt in de namen die je
    toestaat. En dan kan je evt. nog dingen vervangen.

    > my $localf = "/private/tmp/$fp";


    Het bestand kan nu overschreven worden door anderen, die dezelfde naam
    geven.

    > open UPLD, ">$localf" or die $!;
    >
    > my $buffer;
    > my $read;
    > while ($read = read($filename, $buffer, 1024)) {


    read $filename?? Lees de CGI specs door, aangezien je het zelf wilt
    doen, of beter, gebruik CGI.pm

    > print UPLD $buffer;
    > }
    >
    > close UPLD;
    > }
    >
    > Ik heb me gek geGoogled, maar bovenstaande zou moeten werken.
    >
    > De file wordt gemaakt na de form POST, maar de file blijft 0 bytes
    > groot. Iemand een idee ?
    >
    > (OSX, dus geen binmode nodig; ook (<filename>) variant geprobeerd; een
    > subtiel rechten probleem?)


    Nee, want dat die't de open. Je kan ook de print en close nog testen,

    print UPLD $buffer or die "Can't write: $!";

    close UPLD or die "Can't close: $!";

    overigens, in een recente perl versie kan je autovivicatie gebruiken,
    dus:

    open my $upld, "$localf" or die "Can't open '$localf': $!";
    :
    :
    print $upld $buffer or die "Can't write to '$localf': $!";

    etc.

    Merk op dat ik iets meer zinnigs in de die statements zet.

    --
    John Voorbeeldscripts in Perl: http://johnbokma.com/perl/
    Website design: http://johnbokma.com/websitedesign/
    Ervaren Perl / Java programmeur beschikbaar: http://castleamber.com/
    Tevreden opdrachtgevers: http://castleamber.com/testimonials.html



  4. #4
    henq
    [perl] upload met CGI.pm , bijna goed..
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: [perl] upload met CGI.pm , bijna goed..


    "John Bokma" <postmaster@castleamber.com> schreef in bericht
    newsns95998CAF3C708castleamber@130.133.1.4...
    > "henq" <henq _ replace 0 by o wrote:
    >
    >> ..maar nog niet helemaal :-)

    >
    > Gebruik CGI.pm


    Zoals in het onderwerp vermeld, ik gebruik juist CGI.pm. $cgiobj is een
    instantie van CGI;
    Maar dan nog steeds moet je zelf enkele regels perl toevoegen. Ik probeer
    braaf de voorbeelden uit de handleiding toe te passen.

    >
    >> ik gebruik dit stukje:
    >>
    >> open UPLD, ">$localf" or die $!;
    >>
    >> my $buffer;
    >> my $read;
    >> while ($read = read($filename, $buffer, 1024)) {

    >
    > read $filename?? Lees de CGI specs door, aangezien je het zelf wilt
    > doen, of beter, gebruik CGI.pm


    Ja, read $filename want $filename heeft een dubbelrol in CGI.pm, zoals
    iedereen weet. Knip-plak uit perldoc CGI.pm van mijn installatie:

    $filename = $query->param('uploaded_file');

    The filename returned is *also* a file handle. You can read the
    contents
    of the file using standard Perl file reading calls:

    # Read a text file and print it out
    while (<$filename>) {
    print;
    }

    # Copy a binary file to somewhere safe
    open (OUTFILE,">>/usr/local/web/users/feedback");
    while ($bytesread=read($filename,$buffer,1024)) {
    print OUTFILE $buffer;
    }



    ~henk








  5. #5
    John Bokma
    [perl] upload met CGI.pm , bijna goed..
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: [perl] upload met CGI.pm , bijna goed..

    "henq" <henq _ replace 0 by o wrote:

    >
    > "John Bokma" <postmaster@castleamber.com> schreef in bericht
    > newsns95998CAF3C708castleamber@130.133.1.4...
    >> "henq" <henq _ replace 0 by o wrote:
    >>
    >>> ..maar nog niet helemaal :-)

    >>
    >> Gebruik CGI.pm

    >
    > Zoals in het onderwerp vermeld, ik gebruik juist CGI.pm. $cgiobj is
    > een instantie van CGI;
    > Maar dan nog steeds moet je zelf enkele regels perl toevoegen. Ik
    > probeer braaf de voorbeelden uit de handleiding toe te passen.


    Maar minder dan je gebruikte :-)

    > The filename returned is *also* a file handle. You can read the
    > contents
    > of the file using standard Perl file reading calls:


    Aaahhh... ok :-)

    "or undef if the parameter is not a valid filehandle"

    Zou ik wel op controleren (weet niet of je dat deed)

    > # Copy a binary file to somewhere safe
    > open (OUTFILE,">>/usr/local/web/users/feedback");


    Brrr, en dat voorbeeld komt uit de CGI.pm documentatie? (Eh, ja dus)

    > while ($bytesread=read($filename,$buffer,1024)) {
    > print OUTFILE $buffer;


    En check ff bytesread, of de som overeenkomt met de opgegeven
    bestandsgrootte / verwachtte bestandsgrootte.

    --
    John Voorbeeldscripts in Perl: http://johnbokma.com/perl/
    Website design: http://johnbokma.com/websitedesign/
    Ervaren Perl / Java programmeur beschikbaar: http://castleamber.com/
    Tevreden opdrachtgevers: http://castleamber.com/testimonials.html



Webhostingtalk.nl

Contact

  • Rokin 113-115
  • 1012 KP, Amsterdam
  • Nederland
  • Contact
© Copyright 2001-2021 Webhostingtalk.nl.
Web Statistics