#!/oratest/perl/bin/perl use ARS; ($S, $U, $P, $schema, $entry, $field) = (shift, shift, shift, shift, shift, shift); $c = ars_Login($S, $U, $P); %f = ars_GetFieldTable($c, $schema); foreach (keys %f) { $r{$f{$_}} = $_; } %v = ars_GetEntry($c, $schema, $entry); foreach (keys %v) { print "$r{$_} = $v{$_}\n"; dh($v{$_}) if $r{$_} =~ /Attachment/; ra($_) if $r{$_} =~ /Attachment/; } ars_Logoff($c); exit 0; #sub AR_LOC_FILENAME { 1;} #sub AR_LOC_BUFFER { 2;} sub ra { my $fid = shift; print "\t[Retrieving attachment.]\n"; # file: $a = 0 || 1 # buff: $a = undef || attachment unlink('/tmp/attachtest', '/tmp/attachtest2'); ars_GetEntryBLOB($c, $schema, $entry, $fid, ARS::AR_LOC_FILENAME, "/tmp/attachtest") || die ("GetEntryBLOB: $ars_errstr"); my $a = ars_GetEntryBLOB($c, $schema, $entry, $fid, ARS::AR_LOC_BUFFER); die "GetEntryBLOB: $ars_errstr" if(!defined($a)); print "\tattachment size = ".length($a)."\n"; open(FD, ">/tmp/attachtest2") || die "open: $!"; print FD $a; close(FD); } sub dh { my $h = shift; foreach (keys %$h) { print "\t$_ = $h->{$_}\n"; } }