سلام
جناب یه 2 تا پیشنهاد دارم:
1) برای مقایسه حجم همه فایل ها همیشه بهتر هست که از طریق FileBytes چک بکنید. به خاطر اینکه اساسا تمام فایل ها آرایه ای از بایت ها هستند که به صورت بلاک بلاک برروی حافظه ذخیره شده اند. به همین خاطر پیشنهاد می کنم برای مقایسه حجم فایل ارسال شده از این دستور استفاده کنید:
//Check file size
if (FileUpload1.FileBytes.Length / 1024 >= 150)
{
lblMessage.Text = "اندازه حجم فایل باید کمتر از 150 کیلوبایت باشد";
return;
}}
2- در متد IsValidFileType شما آمده اید Extension فایل رو بررسی کردید. خوب فرض کنید من یک فایل Exe دارم اما میام با Extension مورد نظر شما یعنی مثلا jpeg ذخیره میکنم. بر اساس دستورات نوشته شده شما برنامه فایل من رو jpeg می شناسه و با موفقیت هم آپلود می کنه و شما هم فکر می کنید که برنامه درست کار می کنه. برای همین پینشهاد می کنم که دستورات رو تغییر بدید. در وب تمام فایل ها یک MIME Type دارند. اگر در گوگل جستجو کنید یک جدول برای شما نشون داده میشه از تمام MIME Type های مختلف که در وب به صورت استاندارد درومده. نوع هر فایل در Header اون فایل ذخیره میشه نه در FileName اون. شما FileName رو دریافت کردید و در آرایه ValideExtension هاتون یک شرط برای مقایسه گذاشتید. برای همین ابتدا شما هدر فایل رو بخونید و بعد مقایسه انجام بدید. دستورات رو به این صورت تغییر بدید بهتر هستش:
//Check File Extensions
string FileExtensions = FileUpload1.PostedFile.ContentType;
string[] ValidExtensions = { "image/pjpeg", "image/jpeg", "image/jpg", "image/gif" };
if (Array.IndexOf(ValidExtensions, FileExtensions) < 0)
{
lblMessage.Text = "پسوند های مجاز برای آپلود فایل jpeg و gif می باشند.";
return;
}
من برنامه شما رو اجرا نکردم اما شما در لیست امکانات اشاره کردید که فایل پس از آپلود یک خروجی در Label به کاربر نشون می ده تا بتونه اون آدرس رو کپی کنه و در جاهای مختلف ذخیره یا نمایش بده. در کد شما من ندیدم که متغیر message رو با SavePath یا SavePath2 مقدار دهی کرده باشید. اگر میشه این یه قسمت رو به من بگید.