PDA

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 می نویسد که از کدها چیزی متوجه نشدم