View Full Version : مبتدی: نحوه کدنویسی برای دانلود
emilly
چهارشنبه 14 مرداد 1394, 20:18 عصر
سلام
دوستان کسی میتونه یکمی در این مورد راهنممایی کنه ...................
میخوام یه دکمه دانلود بزارم وقتی که روش کلیک کردن فایل از دیتابیس دانلود بشه ...............
این کدها رو از سایت پیدا کردم ولی سردرنیاوردم چی ین ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
اینم لینک : http://barnamenevis.org/showthread.php?502621-%D9%85%D8%B4%DA%A9%D9%84-%D8%AF%D8%B1-%D8%AF%D8%A7%D9%86%D9%84%D9%88%D8%AF&highlight=%D8%AF%D8%A7%D9%86%D9%84%D9%88%D8%AF
pbm_soy
پنج شنبه 15 مرداد 1394, 03:43 صبح
اگر فایل در داخل یکی از فیلدهای دیتابیس ذخیره شده باشد یعنی در فیلدهایی از نوع باینری یا image باشد نمیتوانید دانلود کنید (البته مستقیم)
فایل را از دیتابیس بطور مستقیم نمیتوانید دانلود کنید ابتدا باید محتوای فایل را از فیلد مورد نظر واکشی کنید و در یک فایل فیزیکی ذخیره کنید یعنی دقیقا یک فایل در هاست باید ایجاد کنید و داده های آن فیلد را در آن فایل بنویسید و سپس نام فایل و مسیر آن را بعنوان لینک دانلود در اختیار کاربر قرار بدید تا دانلود شروع شود
emilly
پنج شنبه 15 مرداد 1394, 13:40 عصر
اگر فایل در داخل یکی از فیلدهای دیتابیس ذخیره شده باشد یعنی در فیلدهایی از نوع باینری یا image باشد نمیتوانید دانلود کنید (البته مستقیم)
فایل را از دیتابیس بطور مستقیم نمیتوانید دانلود کنید ابتدا باید محتوای فایل را از فیلد مورد نظر واکشی کنید و در یک فایل فیزیکی ذخیره کنید یعنی دقیقا یک فایل در هاست باید ایجاد کنید و داده های آن فیلد را در آن فایل بنویسید و سپس نام فایل و مسیر آن را بعنوان لینک دانلود در اختیار کاربر قرار بدید تا دانلود شروع شود
دوست عزیز ،
میشه کمی بیتر توضیح بدین که چطور باید پیاده سازی کنم .؟؟؟؟؟؟؟؟؟؟؟
یعنی آدرس م رو توی دیتابیس ذخیره کنم و فایلم رو یه فولدر................
واسه دانلودش چی بنویسم........
LostOfMind
پنج شنبه 15 مرداد 1394, 13:49 عصر
فرض می کنیم شما اسم فایل را در فیلد FileName بانک اطلاعاتی ذخیره کرده باشید(بوسیله FileUpload)
و مسیر فایل در پوشه Upload/Files باشد
با فرض اینکه از گرید ویو استفاده کرده اید،ابتدا یک TemplateField در گرید ویو ایجاد کنید
و بعد بصورت زیر کد نویسی کنید
<asp:TemplateField>
<ItemTemplate>
<a href='<%# Eval("FileName","Upload/Files/{0}") %>' title="دانلود" target="_blank">برای دانلود کلیک کنید</a>
</ItemTemplate>
</asp:TemplateField>
tsfrzdh
پنج شنبه 15 مرداد 1394, 20:22 عصر
سلام
در select indexchange یا itemcommand (بستگی به کنترل نمایش داده هاتون از بانک ) کد یزر را قرار بدید.
HttpContext.Current.Response.ContentType = "APPLICATION/OCTET-STREAM"
Dim Header As [String] = "Attachment; Filename=" & Filename
HttpContext.Current.Response.AppendHeader("Content-Disposition", Header)
Dim Dfile As New System.IO.FileInfo(HttpContext.Current.Server.MapP ath(address))
HttpContext.Current.Response.WriteFile(Dfile.FullN ame)
HttpContext.Current.Response.[End]()
filename , address رو از پایگاه داده میخونید برای هر سطر
به طور مثال
نام فایل:144030346427312.mp3
آدرس فایل:image/5144030346427312.mp3
sadegh.te
جمعه 16 مرداد 1394, 11:06 صبح
فرض می کنیم شما اسم فایل را در فیلد FileName بانک اطلاعاتی ذخیره کرده باشید(بوسیله FileUpload)
و مسیر فایل در پوشه Upload/Files باشد
با فرض اینکه از گرید ویو استفاده کرده اید،ابتدا یک TemplateField در گرید ویو ایجاد کنید
و بعد بصورت زیر کد نویسی کنید
<asp:TemplateField>
<ItemTemplate>
<a href='<%# Eval("FileName","Upload/Files/{0}") %>' title="دانلود" target="_blank">برای دانلود کلیک کنید</a>
</ItemTemplate>
</asp:TemplateField>
سلام دوست عزیز این روشی رو که شما گفتید رو نمیشه با repeater انجام داد؟
emilly
جمعه 16 مرداد 1394, 18:09 عصر
فرض می کنیم شما اسم فایل را در فیلد FileName بانک اطلاعاتی ذخیره کرده باشید(بوسیله FileUpload)
و مسیر فایل در پوشه Upload/Files باشد
با فرض اینکه از گرید ویو استفاده کرده اید،ابتدا یک TemplateField در گرید ویو ایجاد کنید
و بعد بصورت زیر کد نویسی کنید
<asp:TemplateField>
<ItemTemplate>
<a href='<%# Eval("FileName","Upload/Files/{0}") %>' title="دانلود" target="_blank">برای دانلود کلیک کنید</a>
</ItemTemplate>
</asp:TemplateField>
سلام دوست عزیز
منم هم روش شما رو هم با repeater , هم با گرید ویو امتحان کردم جواب نداد ........................
صفحه : HTTP Error 404.0 - Not Found رو میاره ؟؟!!!؟!؟!؟!؟!؟!؟؟؟؟؟؟؟؟؟؟؟؟؟: اراحت:
emilly
جمعه 16 مرداد 1394, 18:14 عصر
سلام
در select indexchange یا itemcommand (بستگی به کنترل نمایش داده هاتون از بانک ) کد یزر را قرار بدید.
HttpContext.Current.Response.ContentType = "APPLICATION/OCTET-STREAM"
Dim Header As [String] = "Attachment; Filename=" &Filename
HttpContext.Current.Response.AppendHeader("Content-Disposition", Header)
Dim Dfile As New System.IO.FileInfo(HttpContext.Current.Server.MapP ath(address))
HttpContext.Current.Response.WriteFile(Dfile.FullN ame)
HttpContext.Current.Response.[End]()
filename , address رو از پایگاه داده میخونید برای هر سطر
به طور مثال
نام فایل:144030346427312.mp3
آدرس فایل:image/5144030346427312.mp3
سلام دوست عزیز
میشه لطفا توضیح بدین که قسمت های "Attachment; Filename=" و ath و (Dfile.FullN ame)تو دستورات زیر واسه چی هستن چون برای اینا واسم خطا میده :متفکر:
Dim Header As [String] = "Attachment; Filename=" & <b> uname</b>
Dim Dfile As New System.IO.FileInfo(HttpContext.Current.Server.MapP ath(<b>address</b>))
HttpContext.Current.Response.WriteFile(Dfile.FullN ame)
تشکر
emilly
جمعه 16 مرداد 1394, 23:48 عصر
دوستان کسی میتونه یکم راهنمایی کنه :گیج:
LostOfMind
شنبه 17 مرداد 1394, 09:13 صبح
سلام دوست عزیز این روشی رو که شما گفتید رو نمیشه با repeater انجام داد؟
با repeater هم میشه کلا با هر کنترل دیگری هم میشه اینکار را انجام داد من گریدویو رو مثال زدم برای Repeater باید از کد زیر استفاده کنید:
<asp:Repeater ID="Repeater1" runat="server" DataSourceID="SqlDataSource1">
<ItemTemplate>
<a href='<%# Eval("FileName","Upload/Files/{0}") %>' title="دانلود" target="_blank">برای دانلود کلیک کنید</a>
</ItemTemplate>
</asp:Repeater>
emilly
شنبه 17 مرداد 1394, 19:36 عصر
سلام دوست عزیز
اینا کدهایی هستن که من واسه ریپیتر و گرید ویوم نوشتم ولی بازم خطای : HTTP Error 404.0 - Not Found رو میده :گیج:
<asp:Repeater ID="Repeater1" runat="server" DataSourceID="SqlDataSource1" OnItemCommand="Repeater1_ItemCommand">
<ItemTemplate>
<table style="border-right-width: thin">
<tr>
<td><%#Eval("uname")%> </td>
<asp:Image ID="Image1" Width="120" Height="140" runat="server" ImageUrl='<%# Eval("image") %>'></asp:Image>
<a href='<%# Eval("uname", "uploads/{0}")%>' title="دانلود" target="_blank">برای دانلود کلیک کنید</a>
</tr>
</ItemTemplate>
</asp:Repeater>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="ID" DataSourceID="SqlDataSource1" OnSelectedIndexChanged="GridView1_SelectedIndexChanged">
<Columns>
<asp:BoundField DataField="uname" HeaderText="uname" SortExpression="uname" />
<asp:TemplateField HeaderText="تصویر">
<ItemTemplate>
<asp:Image ID="Image1" Width="120" Height="140" runat="server" ImageUrl='<%# Eval("image")%>'></asp:Image>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<a href='<%# Eval("uname", "uploads/{0}")%>' title="دانلود" target="_blank">برای دانلود کلیک کنید</a>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
آخه ایراد کارم کجاست که این خطا دست از سرم برنمیداره :متفکر:
LostOfMind
شنبه 17 مرداد 1394, 20:19 عصر
سلام دوست عزیز
اینا کدهایی هستن که من واسه ریپیتر و گرید ویوم نوشتم ولی بازم خطای : HTTP Error 404.0 - Not Found رو میده :گیج:
<asp:Repeater ID="Repeater1" runat="server" DataSourceID="SqlDataSource1" OnItemCommand="Repeater1_ItemCommand">
<ItemTemplate>
<table style="border-right-width: thin">
<tr>
<td><%#Eval("uname")%> </td>
<asp:Image ID="Image1" Width="120" Height="140" runat="server" ImageUrl='<%# Eval("image") %>'></asp:Image>
<a href='<%# Eval("uname", "uploads/{0}")%>' title="دانلود" target="_blank">برای دانلود کلیک کنید</a>
</tr>
</ItemTemplate>
</asp:Repeater>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="ID" DataSourceID="SqlDataSource1" OnSelectedIndexChanged="GridView1_SelectedIndexChanged">
<Columns>
<asp:BoundField DataField="uname" HeaderText="uname" SortExpression="uname" />
<asp:TemplateField HeaderText="تصویر">
<ItemTemplate>
<asp:Image ID="Image1" Width="120" Height="140" runat="server" ImageUrl='<%# Eval("image")%>'></asp:Image>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<a href='<%# Eval("uname", "uploads/{0}")%>' title="دانلود" target="_blank">برای دانلود کلیک کنید</a>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
آخه ایراد کارم کجاست که این خطا دست از سرم برنمیداره :متفکر:
یه نمونه ساده برات درست کردم با بانک اطلاعاتی اکسس.
ببین شاید کارت راه افتاد
تست شده است
134034
emilly
شنبه 17 مرداد 1394, 22:34 عصر
یه نمونه ساده برات درست کردم با بانک اطلاعاتی اکسس.
ببین شاید کارت راه افتاد
تست شده است
134034
خیلی ممنون دوست عزیز از تمام راهنمایی هاتون
نمونه شما رو تست کردم دقیق ، دقیق عمل میکنه اومدم دقیقا عین اونا رو تو پروژه خودم پیاده کردم ولی بازم خطا داد .......:متعجب:
اینم خطا ::ناراحت:
134040
LostOfMind
یک شنبه 18 مرداد 1394, 09:37 صبح
احتمالا آدرس فایل رو اشتباه وارد می کنید
نحوه آدرس دهی رو چک کنید
http://astanweb.ir/article.aspx?id=1056
emilly
دوشنبه 19 مرداد 1394, 21:44 عصر
احتمالا آدرس فایل رو اشتباه وارد می کنید
نحوه آدرس دهی رو چک کنید
http://astanweb.ir/article.aspx?id=1056
سلام دوست عزیز
من مرحله به مرحله تونی رو که گفته بودن رو انجام دادم میشه لطفا یه نگاهی به فایل من بندازین ببینین که ایراد کارم از کجاست ................
emilly
چهارشنبه 21 مرداد 1394, 19:37 عصر
دوستان کسی وقت کرده فایلی رو که گذاشتم رو تست کنه ببینه واسه اونم خطا میده یا نه:متعجب:
emilly
جمعه 23 مرداد 1394, 21:41 عصر
احتمالا آدرس فایل رو اشتباه وارد می کنید
نحوه آدرس دهی رو چک کنید
http://astanweb.ir/article.aspx?id=1056
خوب شاید دوستان وقت نکنند فایل رو یه نگاهی بندازن واسه این خط از کدم :
FileUpload1.PostedFile.SaveAs(Server.MapPath("~/Application/FileUploads/" & FileName.Trim()))
این خطا رو میده :
An exception of type 'System.NotSupportedException' occurred in mscorlib.dll but was not handled in user code
Additional information: The given path's format is not supported.
LostOfMind
جمعه 23 مرداد 1394, 23:51 عصر
چک میکنم خبر میدم
شما با vb می نویسد که از کدها چیزی متوجه نشدم
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.