quiet warnings about CGI::param in list context
[freeside.git] / httemplate / misc / file-upload.html
1 <% include('/elements/header-minimal.html', 'File Upload') %>
2 % if ($error) {
3 Error: <% $error %>
4 % }else{
5 File Upload Successful <% join(',', @filenames) %>;
6 % }
7 <% include('/elements/footer.html') %>
8 <%init>
9
10 die "access denied"
11   unless $FS::CurrentUser::CurrentUser->access_right('Import'); #?
12
13 my @filenames = ();
14 my $error = '';     # could be extended to the access control
15
16 $cgi->param('upload_fields') =~ /^([,\w]+)$/
17   or $error = "invalid upload_fields";
18 my $fields = $1;
19
20 my $dir = $FS::UID::cache_dir. "/cache.". $FS::UID::datasrc;
21
22 foreach my $field (split /,/, $fields) {
23   next if $error;
24
25   my $fh = $cgi->upload($field)
26     or $error = "No valid file was provided.";
27
28   my $suffix = '';
29   if ( $cgi->param($field) =~ /(\.\w+)$/i ) {
30     $suffix = lc($1);
31   }
32
33   my $sh = new File::Temp( TEMPLATE => 'upload.XXXXXXXX',
34                            SUFFIX   => $suffix,
35                            DIR      => $dir,
36                            UNLINK   => 0,
37                          )
38     or $error ||= "can't open temporary file to store upload: $!\n";
39
40   unless ($error) {
41     while(<$fh>) {
42       print $sh $_;
43     }
44     $sh->filename =~ m!.*/([.\w]+)$!;
45     push @filenames,  "$field:$1";
46     close $sh
47   }
48
49 }
50
51 $error = "No files" unless scalar(@filenames);
52
53 </%init>