Fetch image from folder via datatable does not work after placing image in subdirectory

Posted by Arnold Bishkoff on Stack Overflow See other posts from Stack Overflow or by Arnold Bishkoff
Published on 2010-06-09T16:29:14Z Indexed on 2010/06/09 16:32 UTC
Read the original article Hit count: 206

Filed under:
|
|
|

I am having trouble wrapping my head around the following I have code that fetches an image via smarty in a line img src="getsnap.php?picid={$data[$smarty.section.sec.index].picno|default:$nextpic}&typ=pic&width={$config.disp_snap_width}&height={$config.disp_snap_height}" class="smallpic" alt="" />
this works if i pull the image from /temp/userimages/userid/imageNo.ext

but because an OS can segfault if you store too many folders or images in a directory i have code that assigns the user image to a subdirectory based upon division of a subdir per 1000 userids. so in thise case i have user id 94 whos images get stored in /siteroot/temp/userimages/000000/94/pic_1.jpg (through 10) or tn_1 (through 10).jpg

here is the code for getsnap.php

<?php

ob_start();

if ( !defined( 'SMARTY_DIR' ) ) { include_once( 'init.php' ); }

include('core/snaps_functions.php');

if (isset($_REQUEST['username']) && $_REQUEST['username'] != '') { $userid = $osDB->getOne('select id from ! where username = ?',array(USER_TABLE, $_REQUEST['username']) ); } else { // include ( 'sessioninc.php' );

if( !isset($_GET['id']) || (isset($_GET['id'])&& (int)$_GET['id'] <= 0 ) ) {

$userid = $_SESSION['UserId'];

} else {

$userid = $_GET['id'];

} }

if (!isset($_GET['picid']) ) {

if ((isset($_REQUEST['type']) && $_REQUEST['type'] != 'gallery') || !isset($_REQUEST['type']) ) {

$defpic = $osDB->getOne('select picno from ! where userid = ? and ( album_id is null or album_id = ?) and default_pic = ? and active = ? ',array(USER_SNAP_TABLE, $userid,'0','Y','Y' ) );

if ($defpic != '') { $picid = $defpic; } else {

$picid = $osDB->getOne('select picno from ! where userid = ? and ( album_id is null or album_id = ?) and active=? order by rand()',array(USER_SNAP_TABLE, $userid,'0','Y' ) );

} unset( $defpic); } } else {

$picid = $_GET['picid'];

}

$typ = isset( $_GET['typ'])?$_GET['typ']:'pic' ;

$cond = '';

if ( ($config['snaps_require_approval'] == 'Y' || $config['snaps_require_approval'] == '1') && $userid != $_SESSION['UserId'] ) {

$cond = " and active = 'Y' "; }

$sql = 'select * from ! where userid = ? and picno = ? '.$cond;

//Get the pic $row =& $osDB->getRow ( $sql, array( USER_SNAP_TABLE, $userid, $picid ) ); //Okay pic was found in the DB, Lets actually do something //

$id = $userid; $dir = str_pad(($id - ($id % 1000))/100000,6,'0',STR_PAD_LEFT); $zimg = USER_IMAGES_DIR.$dir; $img = getPicture($zimg, $userid, $picid, $typ, $row); //$img = getPicture($userid, $picid, $typ, $row);

//$img = getPicture($dir, $userid, $picid, $typ, $row);

$ext = ($typ = 'tn')?$row['tnext']:$row['picext'];

// Now pic is built as // something pic_x.ext ie pic_2.jpg

if ( $img != '' && ( ( hasRight('seepictureprofile') && ( $config['snaps_require_approval'] == 'Y' && $row['active'] == 'Y' ) ||$config['snaps_require_approval'] == 'N' ) || $userid == $_SESSION['UserId'] ) ) {

$img2 = $img; //$img2 = $dir.'/'.$img;

} else {

$gender = $osDB->getOne( 'select gender from ! where id = ?', array( USER_TABLE, $userid ) ) ;

if ($gender == 'M') { $nopic = SKIN_IMAGES_DIR.'male.jpg'; } elseif ($gender == 'F') { $nopic = SKIN_IMAGES_DIR.'female.jpg'; } elseif ($gender == 'D') { $nopic = SKIN_IMAGES_DIR.'director.jpg'; }

$img2 = imagecreatefromjpeg($nopic); $ext = 'jpg'; }

ob_end_clean(); header("Pragma: public"); header("Content-Type: image/".$ext); header("Content-Transfer-Encoding: binary"); header("Cache-Control: must-revalidate");

$ExpStr = "Expires: " . gmdate("D, d M Y H:i:s", time() - 30) . " GMT";

header($ExpStr); $id = $userid; $dir = str_pad(($id - ($id % 1000))/100000,6,'0',STR_PAD_LEFT);
$zimg = USER_IMAGES_DIR.$dir;

//header("Content-Disposition: attachment; filename=profile_".$userid."_".$typ.".".$ext);

//header("Content-Disposition: attachment; filename=$dir.'/'.profile_".$userid."".$typ.".".$ext); //header("Content-Disposition: attachment; filename=profile"$dir".'/'.".$userid."_".$typ.".".$ext);

header("Content-Disposition: attachment; filename=profile_".$userid."_".$typ.".".$ext);

/* if ($_SESSION['browser'] != 'MSIE') {

header("Content-Disposition: inline" ); } */ if ($ext == 'jpg') { imagejpeg($img2); } elseif ($ext == 'gif') { imagegif($img2); } elseif ($ext == 'png') { imagepng($img2); } elseif ($ext == 'bmp') { imagewbmp($img2); } imagedestroy($img2); ?>

© Stack Overflow or respective owner

Related posts about php

Related posts about mysql