binmode is required on Windows clients. Unix clients don't need it.
> Great :-)
> your code gave me a clue, I just add the magic binmode(OUT); and now it
> works fine, here's my new section of code:
>
> $photo=$entry->get_attribute( 'jpegPhoto' );
> if(ref($photo))
> {
> $picture = @$photo[0];
> }
> else
> {
> print "\n";
> print "No jpegPhoto attribute for DN: $dn\n";
> }
> open (TMP, ">./photos/$uid");
> binmode(TMP);
> $| = 1;
> print TMP $picture;
> close(TMP);
>
> How comes the sample code from
> http://search.cpan.org/src/GBARR/perl-ldap-0.31/contrib/jpegDisplay.pl
> works without that ?? the $|=1 is only for streaming the flow (not
> buffered it) i suppose ? that not enough in my case !.
> anyway it works for me now :-)
>
> Brian K Johnson wrote:
> > The junk below is what I ended up having to do to stuff a jpg into
> > Windows 2003 Active Directory...and then to read it out. Maybe it will
> > give you some hints.
> >
> >
> >
> > Code to read image data from Active Directory
> >
> > use Net::LDAP;
> > $ldapnode="192.168.2.10";
> > $ldap = new Net::LDAP("$ldapnode",port => 389,debug =>3, version => 3)
> > or
> > die "Failed on new\n";
> > $result=$ldap->ldapbind() || die "Bind Failed:$@";
> > @attr=("thumbnailPhoto");
> > $filter="([EMAIL PROTECTED])";
> > $mesg = $ldap->search(filter => $filter,attrs => [EMAIL PROTECTED], base =>
> > "CN=Users,DC=home,DC=yyy,DC=zzz,DC=xxx"
> > ) or die "Search Failed using FILTER: $filter$@";
> >
> > foreach $entry ($mesg->all_entries) {
> > $t=$entry->get("thumbnailPhoto");
> >
> > }
> >
> > open(OUT,">test.jpg");
> > binmode(OUT);
> > foreach(@$t){
> > print OUT "$_";
> > }
> > close(OUT);
> > $ldap->unbind;
> >
> >
> >
> > Code to put a photo in Active Directory
> >
> > #get the name of the jpeg file
> > ($in)[EMAIL PROTECTED];
> > open(IN,"$in");
> > binmode(IN);
> > $c=0;
> > while(<IN>){
> > $c++;
> > $photo=$photo.$_;
> > print "NEXT: $c\n";
> > }
> > close(IN);
> > use Net::LDAP;
> > $ldapnode="192.168.2.10";
> >
> > $ldap = new Net::LDAP("$ldapnode",port => 389,debug => 0) or
> > die "Failed on new\n";
> >
> > $pass="notmypassword";
> > $dn="[EMAIL PROTECTED]";
> >
> > $dnu="CN=bozo,CN=Users,DC=home,DC=yyy,DC=zzz,dc=xxx";
> >
> > $ldap->ldapbind(dn => "$dn", password => "$pass") || die "Bind
> > Failed:$@";
> >
> >
> >
> > if (!$photo){
> > print "DELETE\n";
> > $result=$ldap->modify( $dnu, delete => { thumbnailPhoto => [] }
> > );
> > $err=$result->code;
> > }
> > else
> > {
> > print "REPLACE\n";
> > $result=$ldap->modify( $dnu, replace => { thumbnailPhoto =>
> > "$photo" } );
> > $err=$result->code;
> > }
> >
> > print "ERR: $err\n";
> >
> >
> > -----Original Message-----
> > From: Chris Ridd [mailto:[EMAIL PROTECTED]
> > Sent: Monday, March 29, 2004 10:04 PM
> > To: jehan.procaccia; [EMAIL PROTECTED]
> > Subject: Re: retrieve jpegPhoto
> >
> > On 29/3/04 1:09 pm, jehan.procaccia <[EMAIL PROTECTED]> wrote:
> >
> >
> >>Hello,
> >>I am trying to retrieve jpegPhotos from my openldap directory with
> >>Net::Ldap, however I keep getting files containing only "data" and not
> >
> >
> >>a jpeg files.
> >>I took inspiration from:
> >>http://search.cpan.org/src/GBARR/perl-ldap-0.31/contrib/jpegDisplay.pl
> >>here's the section of code I took:
> >>
> >> $photo=$entry->get_attribute( 'jpegPhoto' );
> >
> >
> > That really ought to be:
> >
> > $photo=$entry->get_value( 'jpegPhoto' );
> >
> > If you run the script with 'use warn;' you will see why.
> >
> >
> >> if(ref($photo))
> >> {$picture = @$photo[0];}
> >> else
> >> {print "\n";
> >> print "No jpegPhoto attribute for DN: $dn\n";} open (TMP,
> >>">./photos/$mail"); $| = 1; print TMP $picture; close(TMP);
> >>
> >>$ file photos/[EMAIL PROTECTED]
> >>photos/[EMAIL PROTECTED]: data which cannot be viewed as a
> >>jpeg photo :-(
> >>
> >>What I am doing wrong ?
> >
> >
> > Is there a difference between the value you retrieved and the value in
> > the file (ie is writing to the file going wrong)?
> >
> > Are the JPEGs being *added* correctly to the server? Are any other
> > clients able to read the JPEGs?
> >
> > Cheers,
> >
> > Chris
> >
> > Cheers,
> >
> > Chris
> >
> >
> >