PDA

View Full Version : سوال: save & retrive image



mirshakkeh
شنبه 14 آذر 1388, 22:02 عصر
سلام
من می خوام در یک صفحه تصویری با یک سایز خاص آپلود بشه وسپس همان تصویر در بانک ذخیره شود و در صفحه ی دیگر تمام تصاویری که تا به حال ذخیره شده , نمایش دهد.
لطفا راهنمایی کنید چه طور باید این کار رو انجام بدم.

mohsenw700
شنبه 14 آذر 1388, 22:06 عصر
سلام

شما در اصل نمی تونید که خود عکس را در پایگاه داده ذخیره کنید ولی میتوانید که اسم آن عکس را ذخیره کنید تا بعدا دوباره بوسیله آن اسم فراخوانی کنید !

s_salavati2002
شنبه 14 آذر 1388, 22:55 عصر
سلام

شما در اصل نمی تونید که خود عکس را در پایگاه داده ذخیره کنید ولی میتوانید که اسم آن عکس را ذخیره کنید تا بعدا دوباره بوسیله آن اسم فراخوانی کنید !
عکس را میشه بصورت blob در دیتابیس ذخیره کرد

2008somayeh
یک شنبه 15 آذر 1388, 22:51 عصر
دنبال کلاس های image cache باش !



سلام می شه بیشتر راهنمایی بکنید من برای یک پروژه به این کار نیاز دارم.

TheMohammad
پنج شنبه 19 آذر 1388, 15:30 عصر
کل محتوای عکس رو بصورت متنی بخون و توی یک فیلد جدول از نوع BLOB ذخیره کن !!
برای نمایشش هم باید محتوای اون فیلد رو توی صفحه پرینت کنی به طور عادی !! و فقط header مناسب رو اضافه کنی
دیگه جزئیات بیشتر با خودتونه !

fumnimda
جمعه 20 آذر 1388, 18:35 عصر
ببین من همین امروز این کار رو کردم.
برای ذخیره کردن عکس تو دیتابیس باید نوع فیلدی که می خوای عکس توش ذخیره بشه رو blob انتخاب کنی که ممکنه بسته به اندازه عکست نیاز باشه از نوع Longblob تعریف بشه.
بعد عکس رو از توی یک فرم از کاربر دریافت می کنی و یک جایی اون رو ذخیره می کنی. بعد فایل عکس ذخیره شده رو به صورت باینری باز می کنی و کل فایل رو می خونی و می ریزی تو یک متغیر . بعد متغیر رو تو جدول ذخیره می کنی و بعد هم فایل ذخیره شده رو از رو سرور پاک می کنی.
برای نمایش عکس هم یک select می گیری از جدولی که عکس داخلش هست و با دو خط کد ناقابل ساده می فرستیش بره رو صفحه نشون داده بشه:

خب این یک مثال برای اینکه گیج نشده باشی:

جدول رو می سازی:


create table pix (
pid int primary key not null auto_increment,
title text,
imgdata longblob)

این هم کد برای یک صفحه که عکس رو از کاربر می گیره و می ریزه تو جدول:



<?php

// Connect to database

$errmsg = "";
if (! @mysql_connect("localhost","root","")) {
$errmsg = "Cannot connect to database";
}
@mysql_select_db("binary_data");

// First run ONLY - need to create table by uncommenting this
// Or with silent @ we can let it fail every sunsequent time ;-)

/*$q = < < <CREATE
create table pix (
pid int primary key not null auto_increment,
title text,
imgdata longblob)
CREATE;
@mysql_query($q);*/

// Insert any new image into database

if (isset($_REQUEST[completed]) && $_REQUEST[completed] == 1) {
// Need to add - check for large upload. Otherwise the code
// will just duplicate old file ;-)
// ALSO - note that latest.img must be public write and in a
// live appliaction should be in another (safe!) directory.
move_uploaded_file($_FILES['imagefile']['tmp_name'],"latest.img");
$instr = fopen("latest.img","rb");
$image = addslashes(fread($instr,filesize("latest.img")));
unlink("latest.img");
if (strlen($instr) < 149000) {
mysql_query ("insert into pix (title, imgdata) values (\"".
$_REQUEST[whatsit].
"\", \"".
$image.
"\")");
} else {
$errmsg = "Too large!";
}
}

// Find out about latest image
$title = '';
$gotten = @mysql_query("select * from pix ");
if ($row = @mysql_fetch_assoc($gotten)) {
$title = htmlspecialchars($row['title']);
$bytes = $row['imgdata'];
//echo $bytes;
} else {
$errmsg = "There is no image in the database yet";
$title = "no database image available";
// Put up a picture of our training centre
$instr = fopen("ctco.jpg","rb");
$bytes = fread($instr,filesize("ctco.jpg"));
}

// If this is the image request, send out the image

if ($_REQUEST['gim'] == 1) {
header("Content-type: image/jpeg");
print $bytes;
exit ();
}
?>

<html><head>
<title>Upload an image to a database</title>
<body bgcolor=white><h2>Here's the latest picture</h2>
<font color=red><?= $errmsg ?></font>
<center><img src= width=144><br>
<b><?= $title ?></center>
<hr>
<h2>Please upload a new picture and title</h2>
<form enctype=multipart/form-data method=post>
<input type=hidden name=MAX_FILE_SIZE value=150000>
<input type=hidden name=completed value=1>
Please choose an image to upload: <input type=file name=imagefile><br>
Please enter the title of that picture: <input name=whatsit><br>
then: <input type=submit></form><br>
<hr>
</body>
</html>


ببین من الان وقت ندارم که خیلی توضیح بدم این کد رو باید برم مهمونی. اما تو خودش comment داره که هر جا داره چه می کنه. بخونی می فهمی.
اگه نفهمیدی فردا می گم توضیحاتش رو.

phoenixhunter
شنبه 21 آذر 1388, 11:30 صبح
بهتره بجای ذخیره عکس در بانک آدرسش رو ذخیره کنی و خود عکس رو توی فولد خاص نگه داری و در صورت لزوم با استفاده از آدرسش اونو نمایش بدی.

fumnimda
شنبه 21 آذر 1388, 20:24 عصر
بهتره بجای ذخیره عکس در بانک آدرسش رو ذخیره کنی و خود
عکس رو توی فولد خاص نگه داری و در صورت لزوم با استفاده از آدرسش اونو نمایش بدی.

چرا؟ ذخیره کردن عکس تو جدول چون امنیت بالاتری برای عدم دسترسی غیر مجاز به عکس ها داره بهتره به نظر من. از لحاظ حجمی هم فرقی نمی کنه که روی هارد باشه یا تو جدول. هر دو اندازه حجم عکس فضا می گیره.
البته با این روش لود روی سرور mysql بالاتر میره اما این موضوع بستگی داره به اینکه بار روی سرور چقدر هست.