Training, Open Source computer languages
PerlPHPPythonMySQLApache / TomcatTclRubyJavaC and C++LinuxCSS 
Search for:
Home Accessibility Courses Diary The Mouth Forum Resources Site Map About Us Contact
For 2023 (and 2024 ...) - we are now fully retired from IT training.
We have made many, many friends over 25 years of teaching about Python, Tcl, Perl, PHP, Lua, Java, C and C++ - and MySQL, Linux and Solaris/SunOS too. Our training notes are now very much out of date, but due to upward compatability most of our examples remain operational and even relevant ad you are welcome to make us if them "as seen" and at your own risk.

Lisa and I (Graham) now live in what was our training centre in Melksham - happy to meet with former delegates here - but do check ahead before coming round. We are far from inactive - rather, enjoying the times that we are retired but still healthy enough in mind and body to be active!

I am also active in many other area and still look after a lot of web sites - you can find an index ((here))
empty file on upload

Posted by dabbler (leah), 21 January 2004
Hi, I'm trying to install a mod that works for a lot of other people, but does not want to work for me (and a couple of others as well), so I think it must be server related. It's an avatar upload add-on for a Profile.

What it does do is create a file with the correct filename in the upload directory, however, the file is 0kb. Since it is creating a file, does this confirm that chmod is not an issue? I would think so, but I'm not sure. I've looked at a lot of other pages and tried a lot of variations with no luck.

Posting the bulk of the code in hopes someone has some ideas on what might work.

sub UploadAvatar {
     if(!$allowuplava) { &fatal_error($uplavatxt{'8'}); }

     if ($INFO{'username'} =~ m~/~){ &fatal_error($txt{'224'}); }
     if ($INFO{'username'} =~ m~\\~){ &fatal_error($txt{'225'}); }
     if($username ne $INFO{'username'} && $settings[7] ne 'Administrator') { &fatal_error($txt{'80'}); }
     if(!-e ("$memberdir/$INFO{'username'}.dat")){ &fatal_error("$txt{'453'} -- $INFO{'username'}"); }
     if($allowpics) {
           opendir(DIR, "$facesdir") || fatal_error("$txt{'230'} ($facesdir)! $txt{'681'}");

     $yymain .= qq~
<form action="$cgi;action=uploadavatar2;username=$INFO{'username'}" method="POST" enctype="multipart/form-data" name="avatarupload">
<table border=0 width=720 cellspacing=1 bgcolor="$color{'bordercolor'}" class="bordercolor" align="center">
   <td class="titlebg" bgcolor="$color{'titlebg'}" height="30">
   &nbsp;<img src="$imagesdir/profile.gif" alt="" border="0">&nbsp;
   <font size=2 class="text1" color="$color{'titletext'}"><b>$uplavatxt{'1'}</b></font></td>
   <td class="windowbg" bgcolor="$color{'windowbg'}">
   <table border=0 width="100%" cellpadding="3">
     <td><font size="2"><B>$uplavatxt{'1'}:</B></font><br><font size="1">$uplavatxt{'2'} <b>$uplavasize kB</b>.</font></td>
     <td valign="top"><input type="file" name="umafile" size="37"></td>
   <td class="catbg" bgcolor="$color{'catbg'}" height="25" align="center"><font size=2><BR>
   <input type=submit name=moda value="$uplavatxt{'1'}"><BR><BR>
     $yytitle = $uplavatxt{'1'};

sub UploadAvatar2 {
     if(!$allowuplava) { &fatal_error($uplavatxt{'8'}); }

     # make sure this person has access to this profile
     if($username ne $INFO{'username'} && $settings[7] ne 'Administrator') { &fatal_error($uplavatxt{'7'}); }

     use CGI;
     my $query = new CGI;

     if ($query->param('umafile')) {
           $avatar = $query->param('umafile');

     my $avat=lc($avatar);

     if($avat =~ /\.jpg$/ || $avat =~ /\.gif$/ || $avat =~ /\.png$/) {
           my $type;
           $avafile = "$INFO{'username'}$type";
     else { &fatal_error("$uplavatxt{'2'} $uplavasize kB"); }

     $write_file = "$umauploaddir/$avafile";

     binmode $avatar;
     binmode AVADAT;

     while (read($avatar,my $buffer,1024)) { print AVADAT $buffer; }

     my @Inf=stat("$write_file");

     if($uplavasize && $Inf[7]>$uplavasize*1024) {
           fatal_error("$uplavatxt{'9'} <b>$uplavasize kB</b>.");

     fopen(FILE, "$memberdir/$INFO{'username'}.dat");

     $meminfos[13] = "$umauploadurl/$avafile\n";
     fopen(FILE, ">$memberdir/$INFO{'username'}.dat");
     print FILE @meminfos;


     $yySetLocation = qq~$boardurl/YaBB.$yyext?board=;action=profile;username=$INFO{'username'}~;

Posted by admin (Graham Ellis), 21 January 2004
Yep, seen this before ... just trying to remember what the solution was  

I think it IS server related, and to do with the end of line characters on the server - which are \r\n for Windows (carriage return, line feed) and \n (line feed) for almost everything else (Solaris, Unix, Linux OSX).

I also notice that your code uses an intermediate temporart file as a staging post for the data, but it doesn't check whether the file opens correctly for read / write.   The symptom you describe could also be caused by the staging directory not being writable to the web server, even though the final destination is.

Posted by dabbler (leah), 23 January 2004
Thank you Graham, I'll try working at those suggestions.

This page is a thread posted to the opentalk forum at and archived here for reference. To jump to the archive index please follow this link.

You can Add a comment or ranking to this page

© WELL HOUSE CONSULTANTS LTD., 2024: Well House Manor • 48 Spa Road • Melksham, Wiltshire • United Kingdom • SN12 7NY
PH: 01144 1225 708225 • FAX: 01144 1225 793803 • EMAIL: • WEB: • SKYPE: wellho