PDA

View Full Version : آموزش: نحوه محدود کردن سایز فایل قبل از آپلود کردن در client مثل سازمان سنجش



mtk_designer
سه شنبه 22 آذر 1390, 10:13 صبح
سلام به همگی دوستان
من نیازمند کدی هستم که بتونم عکس یا فایلی رو که کاربر می خواهد آپلود کند را قبل از اینکه که به سرور فرستاده شود چک کند و برای سایز و نوع آن محدودیت تعیین کرد
بازم می گم منظورم در client هست
ممنون

hamid_shrk
سه شنبه 22 آذر 1390, 10:17 صبح
سلام ،
اگه از ASP و فایل آپلودر استفاده میکنید این کد سایز فایل آپلود شده رو برمیگردونه:

lenght = FileUpload1.PostedFile.ContentLength;

حالا میتونید بررسی کنید که اگه حجمش زیاد بود عمل آپلود انجام نشه و پیغام بده به کاربر .

if (lenght < 52000)

بررسی میکنه که حجم فایل از 50 کیلو بایت بیشتر نشه.

mtk_designer
سه شنبه 22 آذر 1390, 10:26 صبح
ممنون .می دونم. اما من میخوام قبل از این که کاربر دکمه upload رو بزنه حجم رو چک کنه و اگه بیشتر بود پیغام بدهد

mtk_designer
سه شنبه 22 آذر 1390, 10:28 صبح
این کدی که من استفاده کردم موقعی که کاربر upload رو میزنه و کار هم می کنه اما من میخوام قبلش چک کند
if (Fu_Video.PostedFile != null)
{
HttpPostedFile Pic = Fu_Video.PostedFile;
string[] type = Fu_Video.FileName.Split('.');
byte[] data = new Byte[Pic.ContentLength];
Pic.InputStream.Read(data, 0, Pic.ContentLength);
string SavePath = @"Video/";
FileStream newPic = new FileStream(Server.MapPath(SavePath + Subject + "." + type[1]), FileMode.Create);
newPic.Write(data, 0, Pic.ContentLength);
int len = (Pic.ContentLength /1052754);

if (len <=2)
{
newPic.Close();
_TblVideo.VideoFile = SavePath + Subject + "." + type[1];
_TblVideo.PeygiriCode = Peygiri_Code;
_TblVideo.Save();
Lbl_Save.Text = "اطلاعات با موفقیت ثبت شد";
Lbl_Rahgiri.Text = Peygiri_Code;
Txt_Subject.Text = "";
Lbl_file.Text = "";


}
else
{
Lbl_file.Text = "حجم فایل نباید از 2 مگابایت بیشتر باشد";
}

mtk_designer
سه شنبه 22 آذر 1390, 10:30 صبح
کسی هست بتونه کمکم کنه؟

hamid_shrk
سه شنبه 22 آذر 1390, 10:34 صبح
فکر میکنم با جی کوئری و AJAX این کار رو باید انجام بدید، تو تالارهای دیگه مطرح کنید ، اینجا تالار طراحی وب هست

mtk_designer
سه شنبه 22 آذر 1390, 10:40 صبح
خیلی ممنون

moferferi
سه شنبه 22 آذر 1390, 11:56 صبح
سلام.
در محیط دات نت فایل حتما باید بره رو سرور تا بشه سایزش را چک کرد.
جاوا و جیکوئری هم تو این زمینه مشکل دارن چون دسترسی کاملی به io ندارن
چاره کار شما در استفاده از کامپوننت های فلش هست.باید دنبال اپلودر های فلش بگردین.
دو تا لینک زیر را ببینید مخصوصا لینک codeproject
Multiple File Upload With Progress Bar Using Flash and ASP.NET (http://www.codeproject.com/KB/aspnet/FlashUpload.aspx)


MultiPowUpload is advanced flash file upload component. (http://www.element-it.com/multiple-file-upload/flash-uploader.aspx)

و اگه تو کل پروژه فقط یک قسمت اپلودر دارین.مثلا اپلود عکس برای کاربران.توی وب کانفیگ مقادر ماکزیمم اپلود را مشخص کنید.در این روش اگه سایز فایل بیشتر بود اصلا روی سرور هم نمیره.وسط کار اپلود قطع میشه.توی فایل گلوبال هم این خطا را مدیریت کنید.
البته اگه با کامپوننت های فلش بتونید کار کنید دیگه مشکلی ندارین

mtk_designer
سه شنبه 22 آذر 1390, 13:43 عصر
kheyli mamnun

ravand
سه شنبه 22 آذر 1390, 22:20 عصر
حواست باشه كه اين كدها با مرورگرهاي مختلف سازگار باشه. اگه نشد از كدهاي php در سمت سرور استفاده كن ولي پيغامش رو با جاوا اسكريپت بساز.