Hi,
ich versuche seit 3 Tagen, einen Ajax upload zu realisieren. Wie ich aus fertigen Scripten wie tesupload ond UberUploader weiss, benutzen die alle Perl. Nach langem lernen (xD) ist dann folgendes zustandegekommen:
#!/usr/bin/perl -w
use strict;
use CGI;
use CGI::Carp qw ( fatalsToBrowser );
use CGI qw/:standard/;
use CGI::Cookie;
use CGI qw(:cgi);
use File::Copy;
use File::Path;
use File::Basename;
use IO::File;
use Digest::MD5 qw(md5_hex);
## Upload Filesize Bits Bytes MegaBytes
$CGI::POST_MAX = 1024 * 1000 * 100;
sub writeFile {
my ($filename,$contents) = @_;
open (FILE,">$filename");
print FILE "$contents";
close (FILE);
return 1;
}
print "Content-type: text/plain; charset=utf-8\n\n";
@query=split(/&/, $ENV{QUERY_STRING});
%params={};
foreach (@query) {
@cur=split(/\=/, $_);
$params{"@cur[0]"}="@cur[1]";
}
%cookies = fetch CGI::Cookie;
if (exists($params{"id"})) {
# Dateinamen per MD5
$configfl1="../htdocs/tmpinf/".md5_hex($params{"id"}).".upload.size.inf";
$size = $ENV{'CONTENT_LENGTH'};
if ($size <= 1024 * 1000 * 100) {
writeFile ($configfl1, $size);
} else {
writeFile ($configfl1, "oversize");
exit;
}
$postRequest = new CGI;
$fhandle=$postRequest->upload("file");
unless ($postRequest->tmpFileName($fhandle)) {
writeFile($configfl, "request_failed");
exit;
}
} else {
print "Fehler!";
}
Alles anzeigen
Habe das dann mit jQuery kombiniert und hat dann auch fast geklappt, nur wurde das Perl skript - genau wie bei PHP erst nach erfolgreichem & vollständigem hochladen der Datei ausgeführt, wodurch die Sache natürlich ihren sinn verloren hat (die Progressbar war ewig bei 0 und dann eben sofort bei 100%). Kann ich in der ersten zeile Perl iwie dazu anweisen, einfach munter anzufangen, egal ob die Datei nun hochgeladen ist oder noch nicht?
Ich bin dann noch auf die PHP-Extension APC (php_apc.dll) gestpßen, jedoch läuft das nicht auf meinem Server (php.ini nicht zugänglich, modul deaktiviert) und bei mir lokal bekomme ich von apc_fetch() immer nur false anstadt ein array mit daten zum upload. (Ich habde mich dabei nach diesem Tutorial gerichtet).
Hat jemand eine Ahnung, warum das Perl Skript nicht gut läuft oder was ich mit APC falsch mache? Bin echt am verzweifeln. Vielen Dank schon im vorraus an alle die sich Gedanken machen!