ورود

View Full Version : سوال: نمایش ندادن عکسی که آدرسش در بانک ذخیره شده



veniz2008
جمعه 07 بهمن 1390, 15:50 عصر
سلام،من آدرس عکس رو در دیتابیس ذخیره کردم(یه فیلد از نوع nvarchar با نام path ساختم و آدرس عکس رو ذخیره میکنم مثلا بصورت :C:\Program Files\Microsoft Visual Studio 8\Tulips.jpg )،حالا برای نمایش این عکس ها داخل gridview یک ستون از نوع imagefield اضافه کردم و خاصیت DataImageUrlField اونو برابر با path قرار دادم(یعنی فیلد آدرس جدولم)،اما وقتی گرید لود میشه هیچ عکسی نمیاد،آیا تنظیمات خاصی نیاز هست که انجام بدم؟،مرسی از راهنمایی دوستان.

parvizwpf
جمعه 07 بهمن 1390, 15:56 عصر
اسمتون رو عوض کنید یهنی نام فیلد

vahid.ch013
جمعه 07 بهمن 1390, 16:02 عصر
آدرسی که دخیره کردید ایراد داره،اول اینکه شما نباید درایو خاصی رو داخل Field آدرس بنویسید.
از این کد استفاده کنید:
System.AppDomain.CurrentDomain.BaseDirectory;
و بعد مابقی آدرس رو Concat کنید و داخل DB ذخیره کنید.
داخل فیلدهاتون اینجوری ذخیره کنید:
~/img/ProductImage/611.jpg

veniz2008
جمعه 07 بهمن 1390, 16:42 عصر
من متوجه نشدم دقیقا باید چه کاری رو انجام بدم،البته دستوری رو که گفته بودید نوشتم فقط به جای اینکه آدرس منبع رو ذخیره کنه(در اینجا درایو C)،فایل رو داخل خود پروژه ذخیره کرد(پروژه ام در درایو D هستش)،اونم که گفتیت درباره contact اصلا متوجه نشدم :خجالت: ،من از کدهای زیر برای آپلود و ذخیره کردن عکس در دیتابیس استفاده میکنم،لطف کنید این کد رو اصلاح کنید و اینکه برای گرید در نهایت چه چیزی رو بنویسم.اینم بگم که پوشه adminfiles رو درون root پروژه ساختم و عکس ها رو درونش آپلود میکنم.


string path = Server.MapPath(".") + "\\adminfiles\\";

long size = FileUpload1.PostedFile.ContentLength;
size = size / 1024;
if (size > 1800)
{
Label1.ForeColor = System.Drawing.Color.Red;
Label1.Text = "اندازه فایل انتخابی بایستی کمتر از 1800 کیلو بایت باشد";
Label2.Text = "";
return;
}
string filename = System.IO.Path.GetFileName(FileUpload1.PostedFile. FileName);
string filepath = System.IO.Path.GetFullPath(FileUpload1.PostedFile. FileName);
while (System.IO.File.Exists(path + "\\" + filename))
filename = "1" + filename;

FileUpload1.PostedFile.SaveAs(path + filename);
Label1.ForeColor = System.Drawing.Color.Green;
Label1.Text = "فایل با موفقیت بر روی سایت آپلود شد";
string type = System.IO.Path.GetExtension(FileUpload1.PostedFile .FileName);
SqlConnection con = new SqlConnection("Data Source = (local);Initial Catalog=upload1;Integrated Security=True");
con.Open();
filename = System.IO.Path.GetFileName(FileUpload1.PostedFile. FileName);
SqlCommand cmd =
new SqlCommand("insert into files(name_file,type,size,path)values(@filename,@t ype,@size,@path)", con);
cmd.Parameters.Add("@filename", SqlDbType.NVarChar).Value = filename;
cmd.Parameters.Add("@type", SqlDbType.NVarChar).Value = type;
cmd.Parameters.Add("@size", SqlDbType.NVarChar).Value = size;
cmd.Parameters.Add("@path", SqlDbType.NVarChar).Value = filepath;
cmd.ExecuteNonQuery();
Label2.Text = "مشخصات فایل مورد نظر با موفقیت در بانک اطلاعاتی ثبت گردید";
con.Close();

mohammad diba
جمعه 07 بهمن 1390, 17:39 عصر
سلام

http://www.delshad.ir/article.aspx?code=fc9e7520-6d32-47e5-9a06-2e1c2a3f2268

crazy_1892
جمعه 07 بهمن 1390, 17:47 عصر
http://barnamenevis.org/showthread.php?197215-%D9%81%DB%8C%D9%84%D9%85-%D9%87%D8%A7%DB%8C-%D8%A2%D9%85%D9%88%D8%B2%D8%B4%DB%8C
پست شماره 6 را نگاه کن ببین بدردت می خوره

veniz2008
جمعه 07 بهمن 1390, 18:04 عصر
دوستان عزیز مشکلم حل شد،کد صحیح رو میذارم شاید روزی یه دوست دنبال این موضوع بود بتونه استفاده کنه،همانطور که یکی از دوستان در بالا گفتن مسیر رو نباید به اون صورت ذخیره میکردم بلکه باید نام پوشه ای که در root ساخته ام + نام فایل رو ذخیره میکردم یعنی کد بالا بصورت زیر اصلاح میشه:

cmd.Parameters.Add("@path", SqlDbType.NVarChar).Value = "~/adminfiles/"+filename;
ستون imagefield هم که برای نمایش عکس ها هستش یک خاصیت داره به نام DataImageUrlField که بایستی نام فیلد جدولتون که آدرس رو در اون ذخیره میکنید بذارید،موفق باشید.

vahid.ch013
جمعه 07 بهمن 1390, 18:07 عصر
System.IO.File.Exists(path + "~\\" + filename
ببینید درست میشه.