• 0
alaso0olla

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

سؤال

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

 

 

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

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

 

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

 

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

 

 

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

تم تعديل بواسطه Girl22
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

10 إجابة على هذا السؤال .

  • 0

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

 

 

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

استخدمت 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
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

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

iis6 / iis7

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

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

 

 

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
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

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

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

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

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

تم تعديل بواسطه العقده
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

 

عند إضافة :

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

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

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

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

 

 

 

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

تم تعديل بواسطه Girl22
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

 

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

 

ممكن .

 

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

 

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

 

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

ترى حمل معي الى 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. 

 

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

 

 

 

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

 

سؤال ماهو 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

تم تعديل بواسطه العقده
1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

كان غير موجود 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
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .