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.
|