login  Naam:   Wachtwoord: 
Registreer je!
 Forum

perl script oproepen in php en terug naar php gaan.

Offline Hebus - 01/09/2008 12:14
Avatar van HebusNieuw lid ik moet files uploaden groter dan 100mb.
En de enig optie die mijn provider (host op het werk zelf) geeft
is uploaden via een perl script.

dit is het perl script. werkt via een php fomulier type=file etc.
  1. #!/usr/bin/perl -wT
  2.  
  3. use strict;
  4. use CGI;
  5. use CGI::Carp qw ( fatalsToBrowser );
  6.  
  7. $CGI::POST_MAX = 1024 * 150000;
  8. my $safe_filename_characters = "a-zA-Z0-9_.-";
  9. my $upload_dir = "../Films";
  10.  
  11. my $query = new CGI;
  12. my $filename = $query->param("film_file");
  13. my $email_address = $query->param("email_address");
  14.  
  15. if ( !$filename )
  16. {
  17. print $query->header ( );
  18. print "There was a problem uploading your photo (try a smaller file).";
  19. }
  20.  
  21. my ( $name, $path, $extension ) = fileparse ( $filename, '\..*' );
  22. $filename = $name . $extension;
  23. $filename =~ tr/ /_/;
  24. $filename =~ s/[^$safe_filename_characters]//g;
  25.  
  26. if ( $filename =~ /^([$safe_filename_characters]+)$/ )
  27. {
  28. $filename = $1;
  29. }
  30. else
  31. {
  32. die "Filename contains invalid characters";
  33. }
  34.  
  35. my $upload_filehandle = $query->upload("film_file");
  36.  
  37. open ( UPLOADFILE, ">$upload_dir/$filename" ) or die "$!";
  38. binmode UPLOADFILE;
  39.  
  40. while ( <$upload_filehandle> )
  41. {
  42. print UPLOADFILE;
  43. }
  44.  
  45. close UPLOADFILE;
  46.  
  47. print $query->header ( );
  48.  
  49. ;


Ik ken persoonlijk niks van perl dus heb ik naar een script gezocht dat
werkt (en veilig is, volgens de comments).
Script werkt met een form (type=file etc. ...) en van daaruit wordt dan het
perl script opgeroepen, dit werkt.

Nu heb ik het probleem dat ik dit perl script eigenlijk moet aanroepen via
php en (niet direct via action van form )
En jammer genoeg heb ik hier maar heel weinig (of onduidelijke) uitleg over
terug gevonden op het net.

Dus:

1- Ik vul alle gegevens in in het formulier, oa ook kleine bestanden die ik
via php zelf laat afhandelen.
En oa dus ook <input name="film_file" type="file" id="film_file"
size="21" /> (deze is dus veel te groot om via php te verwerken)

2-Submit formulier terug naar zichzelf & php handelt alles af upload de
kleine bestanden of wat er ook verder met moet gebeuren.
Nu zou dus ook de grote file moeten geupload worden....
Dus oproepen van het perl script dat dan de file upload en dan
terug naar php.

Nu heb ik oa dit al geprobeerd en nog een boel andere dingen...
exec('../cgi-bin/upload.cgi'.' '.EscapeShellArg($film_file)); $POST_ ...
ook getest.

Maar geen enkele wil werken, ik heb dus geen enkel idee hoe ik de file
gegevens kaan doorsturen naar het perl script,
naast de film_file variabele zou ik nog een tweede variabele $locatie (map
waar de upload moet komen) moeten kunnen doorsturen.

4 antwoorden

Gesponsorde links
Offline Stijn - 01/09/2008 14:33
Avatar van Stijn PHP expert Als je dit perl script wilt uitvoeren via php moet je PHP.net: shell_exec gebruiken.

  1. $output = shell_exec("perl script.pl");
  2. echo $output;
Offline Hebus - 05/09/2008 15:21 (laatste wijziging 05/09/2008 15:24)
Avatar van Hebus Nieuw lid sry ik krijg het maar niet aan de praat. 
Ku je me ff bij het handje nemen, want mijn gedult is op om nog langer te prutsen aan dit stukje.

De veldnaam voor het uploaden van de file die ik gebruik is film_file
dus in het php script kan ik die aanroepen met
$_FILES["film_file"] en eventueel nog daar achter ["type"] of ["name"]

maar hoe krijg ik die geg naar het script verzonden?
basis code is dus. (maar dan stuur je dus geen geg naar het script.
  1. echo shell_exec("../cgi-bin/upload.cgi ");


als ik bovenstaande script rechtstreek uitvoer als ik een formulier submit lukt het wel, maar ik zit dus met die tussenstap :'
Offline timmie_loots - 05/09/2008 18:59
Avatar van timmie_loots PHP gevorderde Wat is de reden dat hier alleen Perl voor gebruikt kan worden? Als het komt omdat PHP zo ingesteld is dat het geen grote bestanden zal accepteren, dan gaat dit natuurlijk nooit lukken. Je moet dan direct naar het Perl-script posten, niet eerst via PHP.
Offline Hebus - 08/09/2008 08:42 (laatste wijziging 08/09/2008 08:44)
Avatar van Hebus Nieuw lid Hm daar zeg je zoiets ... php is beperkt tot 8MB , en de ftp php functie is afgezet.
Dus dit gaat niet lukken ?
Ik zit nu te denken, zou het niet voor elkaar te krijgen zijn om eerst het perl script op te roepen, en dat deze op zijn beurt de rest van de data naar de php verwerking stuurt ?
Mar geen idee hoe ik dit moet done  
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.197s