في السريييييييييييييييييعععععععع عندنا fileupload control و عايزين نتأكد من حجم الملف قبل تخزينه علي السيرفر
الحل الأول الي مش هانشرحه لأني مابحبهوش:
نعملها بكود javascript و الميزه هنا اننا مش هنضطر نرفع الملف الأول و بعدين نتأكد منه لأنه لو اكبر من الحجم الي احنا عايزينه هيترفض من علي جهاز العميل من عير ما نخسر band width . بس العيب الخطير ان كو د الجافا سكريبت بيشتغل علي جهاز العميل فممكن hacker بطريقه او بأخري يعطل الكود بتاع الجافا سكربت و يخزنلك عفش بيتهم كله علي السيرفر و ادفع بقه يا معلم
الحل الثاني:
هنعملها عن طريق custom validator علي السيرفر
دا كود الأسب دوت نت بتاع الكاستم فاليديتور
<
asp:CustomValidator ID="CustomValidator1" runat="server"
ControlToValidate="FileUpload1"
ErrorMessage="*يسمح فقط ملفات من الأمتداد DOC,PDF وحجم أقل من 0.5 mb"
onservervalidate="CustomValidator1_ServerValidate"></asp:CustomValidator>
وده الكود بيهايند
Protected Sub CustomValidator1_ServerValidate(ByVal source As Object, ByVal args As System.Web.UI.WebControls.ServerValidateEventArgs)
Dim fileuploader1 As FileUpload = DirectCast(FormView1.FindControl("fileupload1"), FileUpload)
If (fileuploader1.FileContent.Length) < 1048576 Then
args.IsValid = True
Else : args.IsValid = False
End If
End Sub
طيب يجي شاب بيفهم يقولي طيب ماهو الهاكر ده نفسه ممكن يحمل ملفات كبيره و بالنظام ده لازم هتتبعت للسيرفر الأول عشان تتفحص فكده هايخسرنا band width و برده هتدفع يا معلم
حلها دي بقه انك تحدد الحجم اللي انت عايز متعديهوش في webconfig وكدة لو حد حاول يرفع حاجه اكبر من الي انت عايزه السيرفر هايفصله و الف سلامه
<httpRuntime maxRequestLength="1048576" executionTimeout="3600"/>
د احمد جلال
dr.agalal@speakasp.net