الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مساعدة ضروووري / Upload and Download Files page

بدأه Girl22 في 30 يونيو 2013 · 10 رد · 1,411 مشاهدة · في ASP.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته 

 

 

بحثت مطولا عن كيفية انشاء صفحة لتحميل ملفات وملفات وسائط بجميع صيغها وتخزين كل صيغة بنفس قاعدة البيانات الخاصة بها مثلا الصور 

(gpeg , gif ,png)  في قاعدة البيانات الخاصة بالصور والفيديو والفلاش ....الخ نفس الشاكلة 

 

ولم أجد مايفيدني 

 

أرجو إفادتي في الموضوع لانه مشروع موقع مكتبة رقمية و لابد أنهاءه في أقرب وقت 

 

 

ولكم جزيل الشكر ...

تم تعديل هذه المشاركة بواسطة Girl22 في 30 يونيو 2013 في 13:54

#2

يمكنك استخدام AsyncFileUpload على Framework 4  او FileUpload على  Framework 3.5  

 

 

بالنسبه لحفظ الملفات هل هو File System  أو بقاعدة البيانات

ليس كل ما يتمناه المرء يدركه

arabteam2000.gif

#3

استخدمت FileUpload  وقاعدة بيانات sql server 

u
sing System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;
using System.Data.SqlClient;
using System.Data;

public partial class AddFiles : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        // Read the file and convert it to Byte Array
        string filePath = FileUpload1.PostedFile.FileName;
        string filename = Path.GetFileName(filePath);
        string ext = Path.GetExtension(filename);
        string contenttype = String.Empty;


          if (ext == ".jpg" || ext == ".gif" || ext == ".png" || ext == ".bmp " || ext == " .jpeg")
        {
            Stream fs = FileUpload1.PostedFile.InputStream;
            BinaryReader br = new BinaryReader(fs);
            Byte[] bytes = br.ReadBytes((Int32)fs.Length);

            //insert the file into database

            string strQuery = "insert into Image(Img_Title, Img_Extension, Img_Data, Course_code, Course_num, Img_Description, Keyword , Date)" +
               " values (@Img_Title, @Img_Extension, @Img_Data, @Course_code, @Course_num, @Img_Description, @Keyword , @Date)";
            SqlCommand cmd = new SqlCommand(strQuery);
            cmd.Parameters.Add("@Img_Title", SqlDbType.VarChar).Value = filename;
            cmd.Parameters.Add("@Img_Extension", SqlDbType.VarChar).Value = ext;
            cmd.Parameters.Add("@Img_Data", SqlDbType.Binary).Value = bytes;
            cmd.Parameters.Add("@Date", SqlDbType.DateTime).Value = DateTime.Now;
            cmd.Parameters.Add("@Course_code", Course_code.SelectedItem.Text);
            cmd.Parameters.Add("@Course_num", Course_num.SelectedItem.Text);
            cmd.Parameters.Add("@Img_Description", Description.Text);
            cmd.Parameters.Add("@Keyword", keywords.Text);
            InsertUpdateData(cmd);
            Label2.ForeColor = System.Drawing.Color.Green;
            Label2.Text = "تم رفع الملف بنجاح";
        }
          //executionTimeout="900000"
        
      else if (ext == ".avi" || ext == ".wmv" || ext == ".wma" || ext == ".wma " || ext == " .wma" || ext == ".rmvb" || ext == ".mp4" || ext == ".3gp " || ext == " .mkv" || ext == ".flv")
        {

            Stream fs = FileUpload1.PostedFile.InputStream;
            BinaryReader br = new BinaryReader(fs);
            Byte[] bytes = br.ReadBytes((Int32)fs.Length);

            //insert the file into database
       
            string strQuery = "insert into [Video File](V_Title, V_Extension, Data, Course_code, Course_num, V_Description, Keyword)" +
                " values (@V_Title, @V_Extension, @Data,  @Course_code, @Course_num, @V_Description, @Keyword)";
            SqlCommand cmd = new SqlCommand(strQuery);
            cmd.Parameters.Add("@V_Title", SqlDbType.VarChar).Value = filename;
            cmd.Parameters.Add("@V_Extension", SqlDbType.VarChar).Value = ext;
            cmd.Parameters.Add("@Data", SqlDbType.Binary).Value = bytes;
            cmd.Parameters.Add("@Course_code", Course_code.SelectedItem.Text);
            cmd.Parameters.Add("@Course_num", Course_num.SelectedItem.Text);
            cmd.Parameters.Add("@V_Description", Description.Text);
            cmd.Parameters.Add("@Keyword", keywords.Text);
            InsertUpdateData(cmd);
            Label2.ForeColor = System.Drawing.Color.Green;
            Label2.Text = "تم رفع الملف بنجاح";
        }
         else
          {
              Label2.ForeColor = System.Drawing.Color.Red;
              Label2.Text = "Error" +
                " Upload Image/Text formats";

          }
      }
         
    
    private Boolean InsertUpdateData(SqlCommand cmd)
    {
        String strConnString = System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
        SqlConnection con = new SqlConnection(strConnString);
        cmd.CommandType = CommandType.Text;
        cmd.Connection = con;
        try
        {
            con.Open();
            cmd.ExecuteNonQuery();
            return true;
        }
        catch (Exception ex)
        {
            Response.Write(ex.Message);
            return false;
        }
        finally
        {
            con.Close();
            con.Dispose();
        }

    }
         
}

لكن لا يمكنني حفظ ملفات الفيديو أكثر من 4MB ..

 

فكيف يمكن حفظ فيديو بحجم أكبر لانه على أساسه يتم حفظ الفلاش والصوت 

 

 

عند الاضافة هذا مايظهر معي 

 

 

post-269394-0-65399100-1372979108_thumb.

تم تعديل هذه المشاركة بواسطة Girl22 في 5 يوليو 2013 في 02:05

#4

ضعي هذا السطر في الــ web.config 

<httpRuntime maxRequestLength="1048576" executionTimeout="360"></httpRuntime>

iis6 / iis7

<security>
      <requestFiltering>
        <requestLimits maxAllowedContentLength="100000000"  />
      </requestFiltering>
    </security>
1

ليس كل ما يتمناه المرء يدركه

arabteam2000.gif

#5
العقده كتب:

 

 

iis6 / iis7

<security>
      <requestFiltering>
        <requestLimits maxAllowedContentLength="100000000"  />
      </requestFiltering>
    </security>

 

 

 

 ماهو iis6 / iis7

 

أضفت السطر الاول لكن القطعة الثانية اضفتها تحته لم يقبل بعدها اضفتها بين الوسم <system.webServer> وطلع ايرور غلط فيه 

 

فعملت وسم جديد تحت اللي موجود اساسا في الصفحة

<system.webServer>
      <security>
         <requestFiltering>
            <requestLimits maxAllowedContentLength="100000000"/>  
         </requestFiltering>
      </security>
   </system.webServer>

ونتج عند التحميل هالعبارة 

 

 

post-269394-0-63121000-1373191578_thumb.

تم تعديل هذه المشاركة بواسطة Girl22 في 7 يوليو 2013 في 13:08

#6

في حال إستخدام IIS6 ضعي هذا الكود فقط في الــ Web.Config

<httpRuntime maxRequestLength="1048576" executionTimeout="360"></httpRuntime>

وفي حال إستخدام IIS7  ضعي هذا الكود فقط في الــ Web.Config

<security>
      <requestFiltering>
        <requestLimits maxAllowedContentLength="100000000"  />
      </requestFiltering>
    </security>

مع العلم انه تم ضبط maxAllowedContentLength   على 100ميجابايت  لحجم الملف .

تم تعديل هذه المشاركة بواسطة العقده في 9 يوليو 2013 في 18:29

ليس كل ما يتمناه المرء يدركه

arabteam2000.gif

#7

شكرا جزيلا على جهدك الطيب لكن

 

عند إضافة :

<httpRuntime maxRequestLength="1048576" executionTimeout="360"></httpRuntime>

ظهر معي هالرسالة 

String or binary data would be truncated. The statement has been terminated.

بالعلم أن نوع البيانات في قاعدة البيانات وفي الكود (Varbinary(MAX لا أعلم ماالمشكلة 

 

 

 

وهل يمكن تغيير الحجم لاكبر من 100MB

تم تعديل هذه المشاركة بواسطة Girl22 في 11 يوليو 2013 في 12:38

#8
اقتباس

 

وهل يمكن تغيير الحجم لاكبر من 100MB

 

ممكن .

 

على فكره تاكدي من امتدادات الملفات انها ضمن MIME File Type  في الــ IIS .

 

اما بخصوص الرساله فالمشكله بقاعدة البيانات ونوع الحقل هل ممكن ان تضعي بيانات الجدول

 

مع الاجراء الخاص بتخزين الملفات .

ليس كل ما يتمناه المرء يدركه

arabteam2000.gif

#9

ترى حمل معي الى 27 ميجابايت حاولت ارفع ملف 30 فما فوق تظهر لي العبارة السابقة 

سؤال ماهو IIS يعني من كيف أعرف اي نوع استخدم ؟

 لاني جربت الكود الاول timeout واشتغل عكس الاخر

 

بالنسبة لقاعدة البيانات الخاصة بالملف ..

 

post-269394-0-46563000-1373672367.png

 

بالنسبة للاجراء لا علم بالمقصود بالضبط هل الكود أم الواجهة

 

بالنسبة تحويل الملف ..

Byte[] buffer;
                       BinaryReader br = new BinaryReader(fs);
                       buffer = br.ReadBytes((int)FileUpload1.PostedFile.InputStream.Length);

وتخزينه باقاعدة البيانات 

 cmd.Parameters.Add("@Data", SqlDbType.VarBinary).Value = buffer;

طبعا باقي الكود في الموضوع الاساسي

 

 

أما الواجهة ..

 

post-269394-0-98218700-1373672845_thumb. 

 

استعراض وتحميل للملف ...

 

 

 

ولك جزيل الشكر ...

#10
اقتباس

 

سؤال ماهو IIS يعني من كيف أعرف اي نوع استخدم ؟

 

هو الــ  Internet Information Services  خدمات معلومات الانترنت الذي يستقبل الطلبات ويعالجها ويرسلها للزبون .

 

اذا كان الخادم Windows Server 2000/2003  راح يكون IIS6  وذا كان Windows Server 2008 راح يكون IIS7 واذا كان Windows Server 2012 راح يكون IIS8

 

طبعا الموضوع في اختلاف بالنسبة IIS7 وهذا تقريبا الذي تعملين عليه لان قيمة اعلى ملف للرفع هي 30 ميجابايت . بعكس IIS6 .

 

اطلعي على هذا الرابط : http://www.webtrenches.com/post.cfm/iis7-file-upload-size-limits

تم تعديل هذه المشاركة بواسطة العقده في 13 يوليو 2013 في 05:07

1

ليس كل ما يتمناه المرء يدركه

arabteam2000.gif

#11

كان غير موجود IIS manager المهم أضفته وعدلت  requestFiltering

 

post-269394-0-08224500-1373882779_thumb.

 

 

والمفروض انه اضيف ايضا 

<system.webServer>
        <security>
            <requestFiltering>
                <requestLimits maxAllowedContentLength="524288000"/>
            </requestFiltering>
        </security>
</system.webServer>

لكن لا فائدة رجعت المشكلة الاولى مايقبل اي حجم من الملفات

 

لا أعلم هل السبب أنني لم أضيف الكود في مكانه الصحيح 

 

post-269394-0-93475300-1373885340_thumb.

تم تعديل هذه المشاركة بواسطة Girl22 في 15 يوليو 2013 في 13:50

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…