Lines 29-34
use C4::Context;
Link Here
|
29 |
use C4::Output; |
29 |
use C4::Output; |
30 |
use C4::Koha; |
30 |
use C4::Koha; |
31 |
use File::stat; |
31 |
use File::stat; |
|
|
32 |
use Digest::MD5 qw(md5_hex); |
32 |
|
33 |
|
33 |
my $input = new CGI; |
34 |
my $input = new CGI; |
34 |
my $file_id = $input->param("id"); |
35 |
my $file_id = $input->param("id"); |
Lines 50-57
else {
Link Here
|
50 |
my @files_list; |
51 |
my @files_list; |
51 |
opendir(DIR, $directory); |
52 |
opendir(DIR, $directory); |
52 |
|
53 |
|
53 |
my $i=0; |
|
|
54 |
foreach my $filename (readdir(DIR)) { |
54 |
foreach my $filename (readdir(DIR)) { |
|
|
55 |
my $id = md5_hex($filename); |
55 |
my $full_path = "$directory/$filename"; |
56 |
my $full_path = "$directory/$filename"; |
56 |
next if ($filename =~ /^\./ or -d $full_path); |
57 |
next if ($filename =~ /^\./ or -d $full_path); |
57 |
|
58 |
|
Lines 59-72
else {
Link Here
|
59 |
push(@files_list, {name => $filename, |
60 |
push(@files_list, {name => $filename, |
60 |
date => scalar localtime($st->mtime), |
61 |
date => scalar localtime($st->mtime), |
61 |
size => $st->size, |
62 |
size => $st->size, |
62 |
id => $i}); |
63 |
id => $id}); |
63 |
$i++; |
|
|
64 |
} |
64 |
} |
65 |
closedir(DIR); |
65 |
closedir(DIR); |
|
|
66 |
my %files_hash = map { $_->{id} => $_ } @files_list; |
66 |
|
67 |
|
67 |
# If we received a file_id and it is valid, send the file to the browser |
68 |
# If we received a file_id and it is valid, send the file to the browser |
68 |
if(defined $file_id and $file_id >= 0 and $file_id < scalar @files_list){ |
69 |
if(defined $file_id and $file_id >= 0){ |
69 |
my $filename = $files_list[$file_id]->{name}; |
70 |
my $filename = $files_hash{$file_id}->{name}; |
70 |
binmode STDOUT; |
71 |
binmode STDOUT; |
71 |
# Open the selected file and send it to the browser |
72 |
# Open the selected file and send it to the browser |
72 |
print $input->header(-type => 'application/x-download', |
73 |
print $input->header(-type => 'application/x-download', |
73 |
- |
|
|