نمایش نتایج 1 تا 15 از 15

نام تاپیک: دانلود از يك فيلد ديتابيس با استفاده از ديتاگريد

  1. #1

    دانلود از يك فيلد ديتابيس با استفاده از ديتاگريد

    با عرض سلام
    دوستان من يك فايل را به صورت باينري در database ذخيره مي كنم حالا با استفاده از يك ديتاگريد مي خواهم كل جدولم را نمايش دهم و به جاي فايل مزبور در ستونهاي ديتاگريد،دكمه اي كه بتوان آن را دانلود كرد چه كار بايد بكنم؟
    خواهش ميكنم كمك فوري

  2. #2

    نقل قول: دانلود از يك فيلد ديتابيس با استفاده از ديتاگريد

    سلام دوست عزیز؛
    من پیشنهاد میکنم این کار رو انجام ندی!
    چون برای سرورهای اشتراکی(با رم پایین) باعث هنگ کردن میشه!
    فایلها رو در پوشه مشخصی ذخیره کن و لینک اونها رو در دیتا بیس بزار.
    در اون پوشه فایل Web.config با تنظیمات زیر بگذار.
    در webconfig:

    <configuration>
    <system.web>
    <authorization>
    <deny user="?"/>
    </authorization>
    </system.web>
    </configuration>

  3. #3

    نقل قول: دانلود از يك فيلد ديتابيس با استفاده از ديتاگريد

    راستی اضافه میکنم.
    اگر بخوای صفحه "دسترسی غیر مجاز رو سفارشی کنی:
    در فایل Web.config اضافه کن:

    <customErrors mode="On" defaultRedirect="EFRR.html">
    <error statusCode="403" redirect="Access_Out.html"/>
    <error statusCode="404" redirect="Find_Out.html"/>
    </customErrors>

    یعنی اگر erorr در برنامه پیش اومد برو به صفحه EFRR.html، و اگر ... (نیازی به توضیح نداره).

  4. #4

    نقل قول: دانلود از يك فيلد ديتابيس با استفاده از ديتاگريد

    سلام
    از راهنماييتون خيلي ممنونم
    اما قسمت مهم سؤال من ديتاگريدش بود فرض كنيد به صورت باينري ذخيره نكنم و آدرس فايل رو (مطابق توصيه شما)در ديتابيس ذخيره كنم حالا چه طور بايد در ديتاگريد ستوني قرار بدم كه با كليك بر روش فايل از درون ديتابيس دانلود شه؟
    با Templateitem ؟ من كار باهاش رو بلد نيستم

  5. #5

    نقل قول: دانلود از يك فيلد ديتابيس با استفاده از ديتاگريد

    تو رو خدا يكي جواب بده.
    postbackurl چيه ؟ به چه درد مي خوره يا چه جوري مي تونم از ديتابيس يك آدرس رو بخونم و با زدن يك دكمه روي ديتاگريد اونو دانلود كنم من از CommandArgument استفاده كردم واونو بايند كردم ولي نميدونم چرا كار نميكنه

  6. #6

    نقل قول: دانلود از يك فيلد ديتابيس با استفاده از ديتاگريد

    اگر براتون مهم نیست که لینک دانلود محرمانه بمون و می تونی از Item template استفاده کنی.


    <asp:TemplateField HeaderText="download">
    <ItemTemplate>
    <div style="width:160px;"><a href='www.yuorsite.com/file/<%# Eval("link") %>' > download</a></div>
    </ItemTemplate>
    <HeaderStyle Font-Bold="False" Font-Size="9pt" HorizontalAlign="Center" />
    </asp:TemplateField>

    که به صورت لینک در میاد. اگر بخوای می تونی خوشگلترش بکنی مثلا یه عکس داخل تگ <a> بزاری که روش نوشته شده دانلود.
    ساده. اما لینک ها محرمانه نمی مونه
    در ضمن
    <%# Eval("link") %>
    اسم فیلد دیتابیسته که بایند میشه. و لینک رو کامل می کنه

  7. #7

    نقل قول: دانلود از يك فيلد ديتابيس با استفاده از ديتاگريد

    من اينكارو ميكنم اما به آدرس مربوطه نميره با وجود اينكه آدرسش رو در بالاي مرورگر هم نوشته ولي پيغام ميده
    postback or callback invalid
    در ادامه هم يه چيزايي درمورد اينكه به دلايل امنيتي نميشه اينكارو كرد و...

  8. #8

    نقل قول: دانلود از يك فيلد ديتابيس با استفاده از ديتاگريد

    نقل قول نوشته شده توسط zahraf مشاهده تاپیک
    من اينكارو ميكنم اما به آدرس مربوطه نميره با وجود اينكه آدرسش رو در بالاي مرورگر هم نوشته ولي پيغام ميده
    postback or callback invalid
    در ادامه هم يه چيزايي درمورد اينكه به دلايل امنيتي نميشه اينكارو كرد و...
    اینی که من گذاشتم ربطی به پست بک و این چیزا نداره. چون یه لینک ساده است و نهایت خطایی که بده اینه که فایل رو پیدا نکنه.
    یا درست بایند نشه و یه خطا بده.
    بیشتر توضیح بده که چیکار کردی؟

  9. #9

    نقل قول: دانلود از يك فيلد ديتابيس با استفاده از ديتاگريد

    از يك template استفاده كردم به اين صورت
    <asp:TemplateField HeaderText="فایلپیوست">
    <ItemTemplate>
    <asp:ImageButton ID="LinkButton1" runat="server"
    CommandName="DoDownload" ImageUrl="pic/downBTN-1.gif" CommandArgument='<%# Bind("extra") %>' ></asp:ImageButton>
    </ItemTemplate></asp:TemplateField>
    كه extra آدرس فايلم در ديتابيس هست و بعد در رويداد RowCommand نوشتم:

    protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
    {
    if (e.CommandName == "DoDownload")
    {
    Response.Redirect(e.CommandArgument.ToString());
    }

    }
    ولي وقتي روي دكمه ي ديتاگريدم كليك ميكنم صفحه اي نمايش داده ميشه كه توش نوشته:
    Server Error in '/WebSite1' Application.
    Invalid postback or callback argument. Event validation is enabled using <pages enableEventValidation="true"/> in configuration or <%@ Page EnableEventValidation="true" %> in a page. For security purposes, this feature verifies that arguments to postback or callback events originate from the server control that originally rendered them. If the data is valid and expected, use the ClientScriptManager.RegisterForEventValidation method in order to register the postback or callback data for validation

  10. #10

    نقل قول: دانلود از يك فيلد ديتابيس با استفاده از ديتاگريد

    مقدار extra چیه؟

  11. #11

    نقل قول: دانلود از يك فيلد ديتابيس با استفاده از ديتاگريد

    نام فيلدي هست كه آدرس فايلم در اون قرار داره در ديتابيس

  12. #12

    نقل قول: دانلود از يك فيلد ديتابيس با استفاده از ديتاگريد

    به جای CommandArgument مقدار PostBackUrl روبایند کن و تابع کد بیهاند رو پاک کن.
    احتمالا به جواب میرسی


    PostBackUrl='<%# Bind("extra") %>'

  13. #13

    نقل قول: دانلود از يك فيلد ديتابيس با استفاده از ديتاگريد

    نقل قول نوشته شده توسط zahraf مشاهده تاپیک
    نام فيلدي هست كه آدرس فايلم در اون قرار داره در ديتابيس
    بله میدونم ماهیتش چیه...

    یکی از مقدارهاش رو بگذارید.

  14. #14

    نقل قول: دانلود از يك فيلد ديتابيس با استفاده از ديتاگريد

    مرسي از دوستان گرامي مشكلمو جور ديگه اي حل كردم

  15. #15

    نقل قول: دانلود از يك فيلد ديتابيس با استفاده از ديتاگريد

    نقل قول نوشته شده توسط zahraf مشاهده تاپیک
    مرسي از دوستان گرامي مشكلمو جور ديگه اي حل كردم
    سلام

    چه جوري حلش كردين چون مشكل منم هست؟

    با تشكر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •