PDA

View Full Version : مشکل در به کار بردن فایل آپلود



liliyan87
چهارشنبه 21 مرداد 1388, 15:56 عصر
سلام من یه گرید ویو دارم که باید اسم کالا و قیمت و عکس اونو نمایش بده.
من با یه فایل آپلود عکس ها رو توی دیتا بیس ذخیره کردم کدهایی که برای فایل آپلود نوشتم اینا هستن:






string imageFolder = "ImageDB";

string savePath;

string saveFile;

if (FileUpload1.HasFile)

{

try

{

savePath = System.IO.Path.Combine(Request.PhysicalApplication Path, imageFolder);

saveFile = System.IO.Path.Combine(savePath, FileUpload1.FileName);

FileUpload1.SaveAs(saveFile);



}

catch (Exception exUpload)

{



}

SqlDataSource1.Insert();

GridView1.DataBind();

clearText();

}



حالا یه مشکل که داره اینه که عکس ها رو توی پوشه ای که در کل پروژه م قرار دادم ذخیره میکنه ولی توی فیلد مربوط به تصویر اون کلا در جدول دیتابیس اسم عکس و مسیرشو برام ذخیره نمیکنه بلکه حروف نا معلومی ذخیره میکنه. نوع فیلد تصویرم nvarch(255) در نظر گرفتم البته با varch(255) امتحان کردم بازم همون نتیجه رو داد و مشکل اصلی اینه که تصویر رورا در گرید ویو نمایش نمیده فقط اسم و قیمت و نشون میده به جای تصویر علامت ضربدر میذاره. نمیدونم مشکلش چیه و چیکار کنم آیا توی کدی که نوشتم اشکال وجود داره؟ یا چیزی باید بهش اضافه کنم.
وقتی نوع فیلد رو Image میذارم بازهم تصویری در گرید ویو نشون نمیده . تنظیمات گرید ویو هم درستن و مشکلی ندارن .

hobab-theme
چهارشنبه 21 مرداد 1388, 16:52 عصر
دوست من چون شما از #C استفاده کردید من خیلی از کدتون سر در نیاوردم
ولی یه نمونه کد #C تو سیستمم دارم که فکر کنم بدردت بخوره


<%@ Page Language="C#" %>
<%@ Import Namespace="System.IO" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
protected void btnAdd_Click(object sender, EventArgs e)
{
if (upImage.HasFile)
{
if (CheckFileType(upImage.FileName))
{
String filePath = "~/UploadImages/" + upImage.FileName;
upImage.SaveAs(MapPath(filePath));
}
}
}
bool CheckFileType(string fileName)
{
string ext = Path.GetExtension(fileName);
switch (ext.ToLower())
{
case ".gif":
return true;
case ".png":
return true;
case ".jpg":
return true;
case ".jpeg":
return true;
default:
return false;
}
}
void Page_PreRender()
{
string upFolder = MapPath("~/UploadImages/");
DirectoryInfo dir = new DirectoryInfo(upFolder);
dlstImages.DataSource = dir.GetFiles();
dlstImages.DataBind();
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>FileUpload File</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label
id="lblImageFile"
Text="Image File:"
AssociatedControlID="upImage"
Runat="server" />
<asp:FileUpload
id="upImage"
Runat="server" />
<br /><br />

<asp:Button
id="btnAdd"
Text="Add Image"
OnClick="btnAdd_Click"
Runat="server" />
<hr />

<asp:DataList
id="dlstImages"
RepeatColumns="3"
runat="server">
<ItemTemplate>
<asp:Image ID="Image1"
ImageUrl='<%# Eval("Name", "~/UploadImages/{0}") %>'
style="width:200px"
Runat="server" />
<br />
<%# Eval("Name") %>
</ItemTemplate>
</asp:DataList>

</div>
</form>
</body>
</html>

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

liliyan87
چهارشنبه 21 مرداد 1388, 22:36 عصر
مرسی به خاطر کدهایی که بهم دادی ولی با این کد ها نمیتونم یه تصویر را توی دیتا بیس ذخیره کنم من برای ذخیره در دیتا بیس از یک SqlDataSourse استفاده کردم به این شکل:



<InsertParameters>
<asp:ControlParameter ControlID="txtTypeTaxi" Name="TypeTaxi" PropertyName="Text" />
<asp:ControlParameter ControlID="txtPelak" Name="NumberPelak" PropertyName="Text" />
<asp:ControlParameter ControlID="FileUpload1" Name="ImageTaxi" PropertyName="FileBytes" />
<asp:ControlParameter ControlID="txtPrice" Name="PriceServise" PropertyName="Text" />
</InsertParameters>






و سعی کردم با این دو دستور تصویر و اطلاعات دیگه رو وارد دیتا بیس کنم و بعد تو گرید نشون بده که عکس رو نشون نمیده و در دیتا بیس حروف نامعلوم وارد میکنه.



SqlDataSource1.Insert();
GridView1.DataBind();

liliyan87
چهارشنبه 21 مرداد 1388, 23:05 عصر
مرسی مشکلم حل شد
ایراد از این قسمت بود:




<asp:ControlParameter ControlID="FileUpload1" Name="ImageTaxi" PropertyName="FileByte" />



باید اینجوری اصلاح میشد:




<asp:ControlParameter ControlID="FileUpload1" Name="ImageTaxi" PropertyName="FileName" />