hentjanson
Member
سلام من یک فرم دارم که عکس رو میگیره و در داخل یک فیلد از بانک میزاره .
سوالم اینه چطوره موقع نمایش عکس رو از بانک صدا بزنم و نمایش بدم .
سوالم اینه چطوره موقع نمایش عکس رو از بانک صدا بزنم و نمایش بدم .
<?php
$dblink = mysql_connect('localhost', 'root', '');
if (!$dblink)
{
print('Failed to connect to database.');
exit;
}
else
{
if (!mysql_select_db('mydb', $dblink))
{
print('Failed to select database.');
exit;
}
}
$id = $_REQUEST['id'];
$image = mysql_query("SELECT * FROM `images` WHERE imageid = $id LIMIT 1", $dblink);
if (mysql_num_rows($image))
{
$fetch_image = mysql_fetch_array($image);
header('Cache-control: max-age=31536000');
header('Expires: ' . gmdate('D, d M Y H:i:s', (date("U") + 31536000)) . ' GMT');
header('Content-disposition: inline; filename=' . $fetch_image['imagename']);
header('Content-Length: ' . strlen($fetch_image['imagedata']));
header('Content-transfer-encoding: binary');
header('ETag: "' . $fetch_image['imagestamp'] . '-' . $fetch_image['imagename'] . '"');
header('Content-type: ' . $fetch_image['imagetype']);
echo $fetch_image['imagedata'];
}
mysql_close($dblink);
?>
<?php
$dblink = mysql_connect('localhost', 'root', '');
if (!$dblink)
{
print('Failed to connect to database.');
exit;
}
else
{
if (!mysql_select_db('mydb', $dblink))
{
print('Failed to select database.');
exit;
}
}
$id = $_REQUEST['id'];
$image = mysql_query("SELECT * FROM `images` WHERE imageid = $id LIMIT 1", $dblink);
if (mysql_num_rows($image))
{
echo '<img src="' . $image['url'] . $image['filename'] . '" border="0">';
}
mysql_close($dblink);
?>
`imageid` smallint(5) unsigned NOT NULL auto_increment,
`imagetype` varchar(15) NOT NULL,
`imagename` varchar(100) NOT NULL,
`imagedata` longblob,
`imagestamp` timestamp NOT NULL default CURRENT_TIMESTAMP,
PRIMARY KEY (`imageid`)
`imageid` smallint(5) unsigned NOT NULL auto_increment,
`url` varchar(100) NOT NULL,
`filename` varchar(100) NOT NULL,
PRIMARY KEY (`imageid`)
البته همه هدرها بصورت کامل وجودشون به اين صورت الزامي نيست، منتها من طوري هدرها رو قرار دادم تا بهترين حالت براي نمايش تصوير (و کش شدن اون) باشه.سلام دوست عزیز شما فراخوانی را نوشتید بی زحمت کد اینتسرشم بنویسم مرسی و اینکه آیا باید تمامی header های نام برده شده باید باشد؟
<?php
//Get file extension function
function getfile_extension($file)
{
return(strtolower(substr(strrchr($file,"."),1)));
}
//Post file
$postimage = $_FILES['image_file'];
//Get the file extension
switch (getfile_extension($postimage['name']))
{
case 'gif': $type = 'image/gif'; break;
case 'jpg': $type = 'image/jpeg'; break;
case 'jepg': $type = 'image/jpeg'; break;
case 'png': $type = 'image/png'; break;
default: $type = null; break;
}
//Store image in database
if ($type)
{
$file_read = @fopen($postimage['tmp_name'], 'rb');
$image['binary'] = @fread($file_read, $postimage['size']);
if (mysql_query("INSERT INTO `images` (`imagetype`, `imagename`, `imagedata`) VALUES ('$type', '" . $image['name'] . "', '" . addslashes($image['binary']) . "')"))
{
print("Your image has successfully stored in database with <b>" . mysql_insert_id . "</b> imageid.");
}
else print("<b>MySQL Error:</b> " . mysql_error());
}
?>
بله، اين روش براي ذخيره هر نوع فايل ميشه ازش استفاده کرد، به شرط اينکه موقع خوندن اون فايل هدرهاي مربوط به اون رو بدونيد که مي تونيد با انجام يک جستجوي ساده در اينترنت هدر مناسب هر يک رو بدست بياريد.سلام خسته نباشید
مرسی از جواب بسیار عالی شما
آیا آیا برای Insert فایل های با پسوند Doc,pdf,...از کد بالا می شه استفاده ککرد؟
'" . $image['binary'] . "'
'" . addslashes($image['binary']) . "'