c66f1aa1a8d43426d583dc5544313f0ef28720ec
[friendica-addons.git/.git] / js_upload / file-uploader / server / perl.cgi
1 #!/usr/bin/perl
2
3     use strict;
4     use CGI::Carp qw(fatalsToBrowser);
5
6     use Digest::MD5;
7
8     my $uploaddir = '/folder/to/save/in/ajax_upload/tmp_uploads';
9
10     my $maxFileSize = 0.5 * 1024 * 1024; # 1/2mb max file size...
11
12     use CGI;
13     my $IN = new CGI;
14
15     my $file = $IN->param('POSTDATA');
16     my $temp_id = $IN->param('temp_id');
17
18         # make a random filename, and we guess the file type later on...
19     my $name = Digest::MD5::md5_base64( rand );
20        $name =~ s/\+/_/g;
21        $name =~ s/\//_/g;
22
23     my $type;
24     if ($file =~ /^GIF/) {
25         $type = "gif";
26     } elsif ($file =~ /PNG/) {
27         $type = "png";
28     } elsif ($file =~ /JFIF/) {
29         $type = "jpg";
30     }
31
32     if (!$type) {
33         print qq|{ "success": false, "error": "Invalid file type..." }|;
34         print STDERR "file has been NOT been uploaded... \n";
35     }
36
37     print STDERR "Making dir: $uploaddir/$temp_id \n";
38
39     mkdir("$uploaddir/$temp_id");
40
41     open(WRITEIT, ">$uploaddir/$name.$type") or die "Cant write to $uploaddir/$name.$type. Reason: $!";
42         print WRITEIT $file;
43     close(WRITEIT);
44
45     my $check_size = -s "$uploaddir/$name.$type";
46
47     print STDERR qq|Main filesize: $check_size  Max Filesize: $maxFileSize \n\n|;
48
49     print $IN->header();
50     if ($check_size < 1) {
51         print STDERR "ooops, its empty - gonna get rid of it!\n";
52         print qq|{ "success": false, "error": "File is empty..." }|;
53         print STDERR "file has been NOT been uploaded... \n";
54     } elsif ($check_size > $maxFileSize) {
55         print STDERR "ooops, its too large - gonna get rid of it!\n";
56         print qq|{ "success": false, "error": "File is too large..." }|;
57         print STDERR "file has been NOT been uploaded... \n";
58     } else  {
59         print qq|{ "success": true }|;
60
61         print STDERR "file has been successfully uploaded... thank you.\n";
62     }