62 lines
1.8 KiB
Perl
62 lines
1.8 KiB
Perl
#!/usr/bin/perl
|
|
|
|
use strict;
|
|
use CGI::Carp qw(fatalsToBrowser);
|
|
|
|
use Digest::MD5;
|
|
|
|
my $uploaddir = '/folder/to/save/in/ajax_upload/tmp_uploads';
|
|
|
|
my $maxFileSize = 0.5 * 1024 * 1024; # 1/2mb max file size...
|
|
|
|
use CGI;
|
|
my $IN = new CGI;
|
|
|
|
my $file = $IN->param('POSTDATA');
|
|
my $temp_id = $IN->param('temp_id');
|
|
|
|
# make a random filename, and we guess the file type later on...
|
|
my $name = Digest::MD5::md5_base64( rand );
|
|
$name =~ s/\+/_/g;
|
|
$name =~ s/\//_/g;
|
|
|
|
my $type;
|
|
if ($file =~ /^GIF/) {
|
|
$type = "gif";
|
|
} elsif ($file =~ /PNG/) {
|
|
$type = "png";
|
|
} elsif ($file =~ /JFIF/) {
|
|
$type = "jpg";
|
|
}
|
|
|
|
if (!$type) {
|
|
print qq|{ "success": false, "error": "Invalid file type..." }|;
|
|
print STDERR "file has been NOT been uploaded... \n";
|
|
}
|
|
|
|
print STDERR "Making dir: $uploaddir/$temp_id \n";
|
|
|
|
mkdir("$uploaddir/$temp_id");
|
|
|
|
open(WRITEIT, ">$uploaddir/$name.$type") or die "Cant write to $uploaddir/$name.$type. Reason: $!";
|
|
print WRITEIT $file;
|
|
close(WRITEIT);
|
|
|
|
my $check_size = -s "$uploaddir/$name.$type";
|
|
|
|
print STDERR qq|Main filesize: $check_size Max Filesize: $maxFileSize \n\n|;
|
|
|
|
print $IN->header();
|
|
if ($check_size < 1) {
|
|
print STDERR "ooops, its empty - gonna get rid of it!\n";
|
|
print qq|{ "success": false, "error": "File is empty..." }|;
|
|
print STDERR "file has been NOT been uploaded... \n";
|
|
} elsif ($check_size > $maxFileSize) {
|
|
print STDERR "ooops, its too large - gonna get rid of it!\n";
|
|
print qq|{ "success": false, "error": "File is too large..." }|;
|
|
print STDERR "file has been NOT been uploaded... \n";
|
|
} else {
|
|
print qq|{ "success": true }|;
|
|
|
|
print STDERR "file has been successfully uploaded... thank you.\n";
|
|
} |