PDA

View Full Version : مبتدی: نحوه نمایش عکس از بانک mysql



mani2000
جمعه 07 آبان 1395, 08:10 صبح
سلام من با این کد عکس رو در بانک ذخیره کردم



<?php
if(!isset($_FILES['upload_image']))
{
echo '<p>choose image</p>';
}
else
{
try {
upload();

echo '<p>success</p>';
echo '<p>ok</p>';
}
catch(Exception $e)
{
echo '<h4>'.$e->getMessage().'</h4>';
}
}


function upload(){


if(is_uploaded_file($_FILES['upload_image']['tmp_name']) && getimagesize($_FILES['upload_image']['tmp_name']) != false)
{



$size = getimagesize($_FILES['upload_image']['tmp_name']);



$type = $size['mime'];
$imgfp = fopen($_FILES['upload_image']['tmp_name'], 'rb');
$size = $size[3];
$name = $_FILES['upload_image']['name'];
$maxsize = 99999999;




if($_FILES['upload_image']['size'] < $maxsize )
{



$dbh = new PDO("mysql:host=localhost;dbname=bank", 'root', '');




$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);




$stmt = $dbh->prepare("INSERT INTO insert (image_type ,image, image_size, image_name) VALUES (? ,?, ?, ?)");




$stmt->bindParam(1, $type);
$stmt->bindParam(2, $imgfp, PDO::PARAM_LOB);
$stmt->bindParam(3, $size);
$stmt->bindParam(4, $name);




$stmt->execute();
}
else
{
throw new Exception("error in hajm");
}
}
else
{
throw new Exception("error in format !");
}
}
?>
</div>
حالا چطور باید با دادن ایدی عکس اون رو نمایش بدم با کد php مشکل دارم
در ضمن میخوام هم توی مرورگر از سرور عکس رو بخونم هم توی برنامه اندرویدی
خواهش می کنم کمکم کنید
مرسی

farhadhp
جمعه 07 آبان 1395, 12:18 عصر
آدرس عکس رو در دیتابیس ذخیره کردی ؟

Unique
جمعه 07 آبان 1395, 23:44 عصر
کلا ذخیره عکس به صورت binary توی فیلد blob توصیه نمیشه اصلا.
شما عکس را روی دیسک ذخیره کن و اسمش را توی پایگاه داده (اسمش هم فقط به شرطی نیازه که فرمت های مختلف داشته باشی و زمان دانلود اسمش اهمیت داشته باشه وگرنه در زمان ذخیره عکس اصلا بهتره عکس را بدون پسوند ذخیره کنی به خاطر موضوعات امنیتی) برای دریافت روی مرورگر و اندروید هم یا باید آرس مستقیم بدی یا از طریق php و ب ا header ارسالش کنی به کاربر.

mani2000
شنبه 08 آبان 1395, 09:35 صبح
بله اول من عکس رو bolb ذخیره کردم اما لان که شما گفتین ادرس رو ذخیره کردم اینجوری


if (!empty($_FILES["uploadedimage"]["name"])) {





$file_name=$_FILES["uploadedimage"]["name"];


$temp_name=$_FILES["uploadedimage"]["tmp_name"];


$imgtype=$_FILES["uploadedimage"]["type"];


$ext= GetImageExtension($imgtype);


$imagename=date("d-m-Y")."-".time().$ext;


$target_path = "images/".$imagename;








if(move_uploaded_file($temp_name, $target_path)) {





$query_upload="INSERT into insertimage (image_path,image_name) VALUES('".$target_path."','".date("Y-m-d")."')";


mysql_query($query_upload) or die("error in $query_upload == ----> ".mysql_error());





}else{





exit("Error While uploading image on the server");


}





}

// Read the row we want to pull out of the database.


حالا مشکلم نمایش عکس با دادن id در اندروید و مرورگر هست
خواهش می کنم کمک کنید

mani2000
دوشنبه 10 آبان 1395, 11:06 صبح
کسی
نیست
؟؟؟؟؟؟؟؟؟؟؟؟؟

lizard.tiny
دوشنبه 10 آبان 1395, 13:36 عصر
سلام

برای اینکار قبل از هر چیز برای همه تصاویر یک دایرکتوری ثابت در نظر بگیرید, توی این مثال من برای شما دایرکتوری رو " images/avatav " در نظر میگیرم

قبل از هر چیز شما باید موقع آپلود تصاویر اسم اونها رو تغییر بدید که همه تصاویر یک جور فراخانی بشن

توی این مثال من یک دیتابیس با اسم user_avatar با 2 فیلد توضیح میدم ( فیلد اول ID و فیلد دوم عکس )

برای آپلود و تغییر نام عکس از این کد استفاده کنید : http://pastecode.ir/?p=762 ( کد sql ساخت دیتابیس رو بصورت کامنت شده در header این فایل قرار دادم که بتونید دیتابیس رو بسازید )

برای فراخوانی هم به این شکل میتونید عکس رو با ID اون فراخوانی کنید و نمایش بدید : http://pastecode.ir/?p=763

توی کد دوم جلوی متغیر $image_id باید شناسه عکس رو بزنید

bugless.ir
دوشنبه 10 آبان 1395, 16:24 عصر
http://www.w3schools.com/php/php_file_upload.asp

mani2000
سه شنبه 11 آبان 1395, 10:11 صبح
سلام

برای اینکار قبل از هر چیز برای همه تصاویر یک دایرکتوری ثابت در نظر بگیرید, توی این مثال من برای شما دایرکتوری رو " images/avatav " در نظر میگیرم

قبل از هر چیز شما باید موقع آپلود تصاویر اسم اونها رو تغییر بدید که همه تصاویر یک جور فراخانی بشن

توی این مثال من یک دیتابیس با اسم user_avatar با 2 فیلد توضیح میدم ( فیلد اول ID و فیلد دوم عکس )

برای آپلود و تغییر نام عکس از این کد استفاده کنید : http://pastecode.ir/?p=762 ( کد sql ساخت دیتابیس رو بصورت کامنت شده در header این فایل قرار دادم که بتونید دیتابیس رو بسازید )

برای فراخوانی هم به این شکل میتونید عکس رو با ID اون فراخوانی کنید و نمایش بدید : http://pastecode.ir/?p=763

توی کد دوم جلوی متغیر $image_id باید شناسه عکس رو بزنید



سلام ممنونم ازتون و وقتی که لطف کردین و گذاشتین
فقط
من کدتون رو انجام دادم برا اپلود درست شد
فقط این روش دریافت عکس امن هست؟
برا دریافت ایمیج چکار کنم که توی فایل
getimage
بتونم با وارد کردن نام کاربری توی مرورگر تمام اطلاعاتش رو ازجدول بگیرم بصورت مرتب مثلا عکس بالا کوچیک باشه و بعد در سطر بعد نام و نام خانوادگیش باشه
و یا برا اندروید چطور عکس رو هم نشون بدم من از این کد در اندروید برا دریافت اطلاعات و نمایش استفاده می کنم اما عکس نمیاد و برنامه بسته میشه

$result = mysql_query("SELECT * FROM product WHERE password = $password");

if (!empty($result)) {
// check for empty result
if (mysql_num_rows($result) > 0) {

$result = mysql_fetch_array($result);

$product = array();
$product["password"] = $result["password"];
$product["name"] = $result["name"];
$product["famil"] = $result["famil"];

$product["image_path"] = $result["image_path"];
// success
$response["success"] = 1;

// user node
$response["product"] = array();

array_push($response["product"], $product);

// echoing JSON response
echo json_encode($response);
}
میدونم وقت ندارید و سوالام زیاد شده
ببخشید
میشه خواهش کنم راهنمایی کنید
مرسی

mani2000
چهارشنبه 12 آبان 1395, 08:52 صبح
کسی نیست؟؟؟

lizard.tiny
چهارشنبه 12 آبان 1395, 10:32 صبح
کسی نیست؟؟؟
درود

این فقط یک کد هست, امن بودنش به نوع پیاده سازی و کدنویسی شما داره

کافیه برای اینکار یک API خیلی ساده بص.رن REST ایجاد کنید

نام کاربری رو POST کنید سمت فایل API و با استفاده از اون توی دیتابیس اطلاعاتی که میخوایید رو بگیرید

پیشنهاد میکنم برای حرفه ای تر شدن کار خروجی رو بصورت JSON در بیارید

ebibombas1988
چهارشنبه 12 آبان 1395, 15:32 عصر
با برنامه نویسی اندروید اشنایی ندارم
ولی این کدایی که نوشتید سمت سرور و ادرس مسیر ذخیره عکس به صورت json بر میگردونه
شما میتونی این ارایه رو بگیر و حالا به هر روشی که خودت میدونی نمایشش بدی
اگه با کدای html واسه مرورگر نمایش بدی کافیه یه تگ image بزنی و خاصیت src برابر این مسیر برگشت داده شده از json قرار بدی

mani2000
چهارشنبه 12 آبان 1395, 22:16 عصر
سلام
ممنونم ازتون الان متوجه نشدم یعنی دقیقا چکارکنم؟

و الان اومدم این کد رو نوشتم برا نمایش عکس
if (isset($_GET["password"])) {
$password = $_GET['password'];

// get a product from products table
$result = mysql_query("SELECT * FROM product WHERE password = $password");

if (!empty($result)) {
// check for empty result
if (mysql_num_rows($result) > 0) {

$result = mysql_fetch_array($result);

$product = array();
$product["password"] = $result["password"];
$product["name"] = $result["name"];
$product["famil"] = $result["famil"];
$product["image_path"] = $result["image_path"];
// success
$response["success"] = 1;

// user node
$response["product"] = array();

array_push($response["product"], $product);

// echoing JSON response
echo json_encode($response);
} else {
// no product found
$response["success"] = 0;
$response["message"] = "No product found";

// echo no users JSON
echo json_encode($response);
}
} else {
// no product found
$response["success"] = 0;
$response["message"] = "No product found";

// echo no users JSON
echo json_encode($response);
}
} else {
// required field is missing
$response["success"] = 0;
$response["message"] = "Required field(s) is missing";

// echoing JSON response
echo json_encode($response);
}

اینو الان داد بهم توی مرورگر
{"image_id":12,"url":"http:\/\/localhost\/save.php\/images\/03-13-2016-1478155433.jpg"}images/03-13-2016-1478155433.jpg
و توی اندروید اینو نوشتم
private final String imageURL = "http://10.0.2.2/save.php
imageView = (ImageView) findViewById(R.id.imageViewShow);


private void getImage() {
String id = editTextId.getText().toString().trim();
class GetImage extends AsyncTask<String,Void,Bitmap>{


ImageView bmImage;
ProgressDialog loading;

public GetImage(ImageView bmImage) {
this.bmImage = bmImage;
}

@Override
protected void onPostExecute(Bitmap bitmap) {
super.onPostExecute(bitmap);
loading.dismiss();
bmImage.setImageBitmap(bitmap);
}

@Override
protected void onPreExecute() {
super.onPreExecute();
loading = ProgressDialog.show(ViewImage.this,"Downloading Image","Please wait...",true,true);
}

@Override
protected Bitmap doInBackground(String... strings) {
//image filde dovome dar table ast
String url = imageURL+ strings[3];
Bitmap mIcon = null;
try {
InputStream in = new java.net.URL(url).openStream();
mIcon = BitmapFactory.decodeStream(in);
} catch (Exception e) {
Log.e("Error", e.getMessage());
}
return mIcon;
}
}

GetImage gi = new GetImage(imageView);
gi.execute(id);
}

و بعد اینو نوشتم


int success = 0;
try {
success = json.getInt(TAG_SUCCESS);
} catch (JSONException e3) {
// TODO Auto-generated catch block
e3.printStackTrace();
}
if (success == 1) {
// successfully received product details
JSONArray productObj = null;
try {
productObj = json.getJSONArray(TAG_PRODUCT);
} catch (JSONException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
} // JSON
// Array

// get first product object from JSON Array
JSONObject product = null;
try {
product = productObj.getJSONObject(0);
} catch (JSONException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
TextView txtName = (TextView) findViewById(R.id.textView1);
TextView txtfamil = (TextView) findViewById(R.id.textView2);

// display product data in EditText
try {
txtName.setText("نام"+product.getString(TAG_NAME));
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
txtfamil.setText("فامیل"+product.getString(TAG_Famil));
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

getImage();

برنامه بسته شد
خواهش میکنم راهنمایی کنید اگه ممکنه....
مرسی...

mani2000
جمعه 14 آبان 1395, 07:42 صبح
کسی نمیدونه؟؟؟؟

mani2000
یک شنبه 16 آبان 1395, 10:49 صبح
؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟