Nieuw 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.  
    
    
        
            
                
#!/usr/bin/perl -wT
use strict;
use CGI;
use CGI::Carp qw ( fatalsToBrowser );
use File::Basename;
$CGI::POST_MAX = 1024 * 150000;
my $safe_filename_characters = "a-zA-Z0-9_.-";
my $upload_dir = "../Films";
my $query = new CGI;
my $filename = $query->param("film_file");
my $email_address = $query->param("email_address");
if ( !$filename )
{
 print $query->header ( );
 print "There was a problem uploading your photo (try a smaller file).";
 exit;
}
my ( $name, $path, $extension ) = fileparse ( $filename, '\..*' );
$filename = $name . $extension;
$filename =~ tr/ /_/;
$filename =~ s/[^$safe_filename_characters]//g;
if ( $filename =~ /^([$safe_filename_characters]+)$/ )
{
 $filename = $1;
}
else
{
 die "Filename contains invalid characters";
}
my $upload_filehandle = $query->upload("film_file");
open ( UPLOADFILE, ">$upload_dir/$filename" ) or die "$!";
binmode UPLOADFILE;
while ( <$upload_filehandle> )
{
 print UPLOADFILE;
}
close UPLOADFILE;
print $query->header ( );
;
             
            #!/usr/bin/perl -wT   use strict; use CGI; use CGI::Carp qw ( fatalsToBrowser );   $CGI::POST_MAX = 1024 * 150000; my $safe_filename_characters = "a-zA-Z0-9_.-"; my $upload_dir = "../Films";   my $query = new CGI; my $filename = $query->param("film_file"); my $email_address = $query->param("email_address");   if ( !$filename ) {  print $query->header ( );  print "There was a problem uploading your photo (try a smaller file)."; }   my ( $name, $path, $extension ) = fileparse ( $filename, '\..*' ); $filename = $name . $extension; $filename =~ s/[^$safe_filename_characters]//g;   if ( $filename =~ /^([$safe_filename_characters]+)$/ ) {  $filename = $1; } else {  die "Filename contains invalid characters"; }   my $upload_filehandle = $query->upload("film_file");   open  ( UPLOADFILE , ">$upload_dir/$filename" ) or  die "$!";binmode UPLOADFILE;   while ( <$upload_filehandle> ) { }   close UPLOADFILE;   print $query->header ( );   ; 
 
  
         
          
     
  
 
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. 
				
				 |