source: main/tags/2.51-fiji/gsdl/cgi-bin/upload@ 24023

Last change on this file since 24023 was 7957, checked in by davidb, 20 years ago

Scripts revised to provide better error handline. Much of useful
functionality is bundled in gsdlCGI.pm

  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 1.4 KB
Line 
1#!/usr/bin/perl -w
2
3
4use gsdlCGI;
5
6
7sub main
8{
9 my $gsdl_cgi = new gsdlCGI();
10 my $gsdlhome = $gsdl_cgi->get_config_info("gsdlhome");
11
12 my $col = $gsdl_cgi->clean_param("c");
13 if ((!defined $col) || ($col =~ m/^\s*$/)) {
14 $gsdl_cgi->generate_error("No collection name specified");
15 }
16
17 my $dir = $gsdl_cgi->clean_param("dir");
18 if ((!defined $dir) || ($dir =~ m/^\s*$/)) {
19 $gsdl_cgi->generate_error("No directory name specified");
20 }
21
22 $dir = "" if (($dir eq ".") || ($dir =~ m/^\.\./));
23
24 my $zip_content = $gsdl_cgi->clean_param("zip");
25 my $zip_fname = "$col.zip";
26
27 $gsdl_cgi->checked_chdir("$gsdlhome/collect/");
28 my $col_dir = "$col/$dir"; # Unix specific
29 $gsdl_cgi->rm_rf($col_dir);
30 if (!-e $col_dir) {
31 my $mkdir_cmd = "mkdir $col_dir";
32 $gsdl_cgi->unix_cmd($mkdir_cmd);
33 }
34
35 if (open(ZOUT,"> $zip_fname")) {
36
37 my $ZIN = $gsdl_cgi->upload('zip');
38 binmode($ZIN);
39
40 my $buf;
41 my $num_bytes = 0;
42
43 while (read($ZIN,$buf,1024)>0) {
44 print ZOUT $buf;
45 $num_bytes += length($buf);
46 }
47
48 close($ZIN);
49 close(ZOUT);
50
51
52## print STDERR "**** Debug as /tmp/XXX.zip\n";
53## `cp $zip_fname /tmp/XXX.zip`;
54
55 `java -classpath $gsdlhome/bin/java/SignedGatherer.jar org.greenstone.gatherer.util.Unzip $gsdlhome/ $zip_fname`;
56
57 unlink "$zip_fname";
58
59 $gsdl_cgi->generate_ok_message("$dir or $col uploaded successfully.");
60 }
61 else {
62 $gsdl_cgi->generate_error("unable to open $zip_fname");
63 }
64}
65
66&main();
67
Note: See TracBrowser for help on using the repository browser.