کنترل تصویر هنگام آپلود در ckeditor
کنترل تصویر هنگام آپلود در ckeditor
در این پست آموزش نحوه کنترل آپلود عکس در ckeditor را توضیح می دهیم.
در آموزش های قبلی نحوه اضافه کردن syntaxhighlighter و آپلود عکس به ckeditor را توضیح دادیم برای این کارمان حرفه ای تر شود. هنگام آپلود عکس ، عکس انتخابی جهت آپلود را کنترل می کنید. مثلا حجم عکس از یک اندازه بزرگتر نباشد یا فرمت عکس فرمت یک تصویر باشد و ...
برای این کا در فایل Upload.ashx را که در آموزش های قبلی ایجاد کرده بودیم را باز کنید و کد آن را به شکل زیر تغییر دهید.
<%@ WebHandler Language="C#" Class="Upload" %> using System; using System.Web; public class Upload : IHttpHandler { public void ProcessRequest(HttpContext context) { HttpPostedFile uploads = context.Request.Files["upload"]; string CKEditorFuncNum = context.Request["CKEditorFuncNum"]; try { string typeFile = uploads.ContentType; typeFile = typeFile.ToUpper(); if ((typeFile != "IMAGE/JPEG") && // Firefox! (typeFile != "IMAGE/PJPEG") && // Internet Explorer! (typeFile != "IMAGE/GIF") && (typeFile != "IMAGE/PNG")) { string message = "پسوند فایل مجاز نیست"; context.Response.Write("<script>window.parent.CKEDITOR.tools.callFunction(" + CKEditorFuncNum + ", \"" + message + "\");</script>"); context.Response.End(); } if (uploads.ContentLength == 0) { string message = "آپلود فایل با مشکل مواجه شده است لطفا مجددا سعی نمائید!"; context.Response.Write("<script>window.parent.CKEDITOR.tools.callFunction(" + CKEditorFuncNum + ", \"" + message + "\");</script>"); context.Response.End(); } if (uploads.ContentLength > 150 * 1024) { string message = "حداکثر حجم مجاز برای آپلود 150 کیلوبایت میباشد!"; context.Response.Write("<script>window.parent.CKEDITOR.tools.callFunction(" + CKEditorFuncNum + ", \"" + message + "\");</script>"); context.Response.End(); } System.Drawing.Image oImage = System.Drawing.Image.FromStream(uploads.InputStream); if ((oImage.Width > 620) || (oImage.Height > 450)) { string message = "دقت داشته باشید حتما اندازه عکس ها بیشتر از 450 در 620 پیکسل نباشد-طول=450 و عرض=620!"; context.Response.Write("<script>window.parent.CKEDITOR.tools.callFunction(" + CKEditorFuncNum + ", \"" + message + "\");</script>"); context.Response.End(); } string imageName = System.IO.Path.GetFileName(uploads.FileName);// دریافت نام عکس string strFileExtension = imageName; int fileExtPos = strFileExtension.LastIndexOf("."); if (fileExtPos >= 0) strFileExtension = strFileExtension.Substring(fileExtPos, 4); string fileName = System.DateTime.Now.ToString(); fileName = fileName.Replace("/", "-").Replace(":", "-").Replace(" ", "-"); uploads.SaveAs(context.Server.MapPath(".") + "\\Images\\Upload\\" + fileName + strFileExtension);//مسیر آپلود فایل //provide direct URL here string url = "/Images/Upload/" + fileName + strFileExtension;// مسیر کامل فایل جهت نمایش در ویرایشگر context.Response.Write("<script>window.parent.CKEDITOR.tools.callFunction(" + CKEditorFuncNum + ", \"" + url + "\");</script>"); context.Response.End(); } catch (System.Exception ex) { } } public bool IsReusable { get { return false; } } }
در شرط اول فرمت عکس را بررسی کردیم که از سه نوع فرمت jpg , gif , png باشد.
در شرط دوم حجم عکس را کنترل کردیم که صفر نباشد.
در شرط سوم حجم فایل را بررسی کردیم که از 150 کیلوبایت بیشتر نباشد.
و در شرط آخر طول و عرض عکس را بررسی کردیم که از 620 و 450 بزرگتر نباشد
در ایجا کارمان تمام می شود و نوبت به ذخیره تصویر در سرور می شود ولی برای که کارمان اصولی تر شود نام عکس را براساس تاریخ و ساعت سیستم ذخیره می کنیم که هم از تکراری بودن نام عکس جلوگیری شود و هم تصاویر را بر اساس تاریخ و ساعت ذخیره کنیم.
ابتدا نام و پسوند عکس را به استفاده از دستور زیر دریافت کردیم و در متغییر imageNameقرار دادیم
سپس با استفاده شرط زیر پسوند فایل را بدست می آوریم و در strFileExtension قرار می دهیم
سپس تاریخ و ساعت سیستم را دریافت می کنیم و سپس با استفاده از دستور Replace کاراکترهای / را به – و : را به – و همچنین جای خالی را به – تغییر می دهیم و در نهایت تصویر را ذخیره می کنیم
نظر / سوال