(finally) wrap up new tax rate engine (for now)
[freeside.git] / httemplate / misc / file-upload.html
diff --git a/httemplate/misc/file-upload.html b/httemplate/misc/file-upload.html
new file mode 100644 (file)
index 0000000..9649d36
--- /dev/null
@@ -0,0 +1,47 @@
+<% include('/elements/header-minimal.html', 'File Upload') %>
+% if ($error) {
+Error: <% $error %>
+% }else{
+Freeside File Upload Successful <% join(',', @filenames) %>;
+% }
+<% include('/elements/footer.html') %>
+<%init>
+
+die "access denied"
+  unless $FS::CurrentUser::CurrentUser->access_right('Import'); #?
+
+my @filenames = ();
+my $error = '';     # could be extended to the access control
+
+$cgi->param('upload_fields') =~ /^([,\w]+)$/
+  or $error = "invalid upload_fields";
+my $fields = $1;
+
+my $dir = $FS::UID::conf_dir. "/cache.". $FS::UID::datasrc;
+
+foreach my $field (split /,/, $fields) {
+  next if $error;
+
+  my $fh = $cgi->upload($field)
+    or $error = "No valid file was provided.";
+
+  my $sh = new File::Temp( TEMPLATE => 'upload.XXXXXXXX',
+                           DIR      => $dir,
+                           UNLINK   => 0,
+                         )
+    or $error ||= "can't open temporary file to store upload: $!\n";
+
+  unless ($error) {
+    while(<$fh>) {
+      print $sh $_;
+    }
+    $sh->filename =~ m!.*/([.\w]+)$!;
+    push @filenames,  "$field:$1";
+    close $sh
+  }
+
+}
+
+$error = "No files" unless scalar(@filenames);
+
+</%init>