View Full Version : سوال: مشکل در ذخیره تاریخ به همراه نام تصویر؟
  
پیام حیاتی
یک شنبه 10 آبان 1394, 01:07 صبح
سلام 
من از کدهای زیر برای ذخبره سازی تصویر و درج تاریخ استفاده می کنم :
//Save Pic-2
        string filename3 = "";
        string filename4 = "";
        if (FileUpload2.PostedFile != null)
        {
            // Check the extension of image  
            string extension = Path.GetExtension(FileUpload2.FileName);
            if (extension.ToLower() == ".png" || extension.ToLower() == ".jpg")
            {
                Stream strm = FileUpload2.PostedFile.InputStream;
                using (var image = System.Drawing.Image.FromStream(strm))
                {
                    int newWidth = 240; // New Width of Image in Pixel  
                    int newHeight = 240; // New Height of Image in Pixel  
                    var thumbImg = new Bitmap(newWidth, newHeight);
                    var thumbGraph = Graphics.FromImage(thumbImg);
                    thumbGraph.CompositingQuality = CompositingQuality.HighQuality;
                    thumbGraph.SmoothingMode = SmoothingMode.HighQuality;
                    thumbGraph.InterpolationMode = InterpolationMode.HighQualityBicubic;
                    var imgRectangle = new Rectangle(0, 0, newWidth, newHeight);
                    thumbGraph.DrawImage(image, imgRectangle);
                    
                    // Save the file  
                    filename3 = filename3 + Server.MapPath("~\\img\\Home\\") + FileUpload2.FileName;
                    filename3 = filename3 + dt_pic;
                    filename4 = FileUpload2.FileName + dt_pic;
                    thumbImg.Save(filename3, image.RawFormat);
                    
                    //Show Image  
                    Image2.ImageUrl = @"~\img\Home\" + FileUpload2.FileName;
                }
            }
مشکل اینجاست تاریخ بعد از پسوند فایل تصویر قرار می گیرد:
136387
بدین شکل نوشتم :
filename1 = dt_pic;
                    filename1 = filename1 + Server.MapPath("~\\img\\Home\\") + FileUpload1.FileName;
(در متغیر dt_pic تاریخ ذخیره شده است) ، خطا داد که این روش آدرس دهی پشتیبانی نمی شود.
سوال دیگر :
من تاریخ را به همراه نام ذخیره می کنم که از تکراری بودن نام ها و جایگزین شدن جلوگیری کنم ، اما اگر در طول یک روز تصاویر هم نامی ذخیره شود تاریخ ثابت است و تصاویر Replace می شوند،برای حل این موضوع باید چه کار کرد؟
پیام حیاتی
یک شنبه 10 آبان 1394, 13:12 عصر
کدهای قسمت save the file رو به شکل زیر تغییر دادم درست شد :
 // Save the file  
                    filename1 = dt_pic + FileUpload1.FileName;
                    FileUpload1.SaveAs(Server.MapPath("~\\img\\Home\\") + filename1);
                    filename2 = dt_pic + FileUpload1.FileName;
                    thumbImg.Save(filename1, image.RawFormat);
اما برای سوال دوم چه پیشنهادی دارید :
من تاریخ را به همراه نام ذخیره می کنم که از تکراری بودن نام ها و جایگزین شدن جلوگیری کنم ، اما اگر در طول یک روز تصاویر هم نامی ذخیره شود تاریخ ثابت است و تصاویر Replace می شوند،برای حل این موضوع باید چه کار کرد؟
malloc
یک شنبه 10 آبان 1394, 13:28 عصر
من روشی که استفاده میکنم اینه که کلا اسم عکس رو عوض میکنم و طبق یه فرومولی که قطعا تکراری نمیشه ذخیره میکنم مثلا 
1510109166_Orig.jpg
توام بتره برای خودت یه فرمول بسازی
aminmousavi
یک شنبه 10 آبان 1394, 14:29 عصر
سلام دوست عزیز .
یک متد بساز برای چک کردن اسم فایل که ورودیش آدرس فایل هست (اسم فایل + مسیر) و خروجی هم نام فایل نهایی هست
به این متد آدرس اولیت رو میدی
کدش اینجوری میشه :
 public string CheckingFile(string OutputFolder, string filename)
        {
            while (System.IO.File.Exists(OutputFolder + @"\" + filename))
            {
                string pasvand = System.IO.Path.GetExtension(filename);
                string esm = filename.Remove(filename.Length - pasvand.Length, pasvand.Length);
                filename = esm + "1" + pasvand;
            }
            return filename;
        }
اگر اسم تکراری باشه ، یکدونه 1 به انتها فایل اضافه میشه .
پیام حیاتی
یک شنبه 10 آبان 1394, 14:44 عصر
از تابع random استفاده کردم ، بدین شکل :
 //Create Random Numbers
                    Random r = new Random();
                    string n = r.Next().ToString();
                    
                    // Save the file  
                    filename1 = n + FileUpload1.FileName;
                    FileUpload1.SaveAs(Server.MapPath("~\\img\\Home\\") + filename1);
                    filename2 = n + FileUpload1.FileName;
                    thumbImg.Save(filename1, image.RawFormat);
aminmousavi
یک شنبه 10 آبان 1394, 14:55 عصر
با رندم احتمال تکراری بودن رو کم میکنید ، اما شانس تکراری بودن داره .
پیام حیاتی
یک شنبه 10 آبان 1394, 15:19 عصر
سلام دوست عزیز .
یک متد بساز برای چک کردن اسم فایل که ورودیش آدرس فایل هست (اسم فایل + مسیر) و خروجی هم نام فایل نهایی هست
به این متد آدرس اولیت رو میدی
کدش اینجوری میشه :
 public string CheckingFile(string OutputFolder, string filename)
        {
            while (System.IO.File.Exists(OutputFolder + @"\" + filename))
            {
                string pasvand = System.IO.Path.GetExtension(filename);
                string esm = filename.Remove(filename.Length - pasvand.Length, pasvand.Length);
                filename = esm + "1" + pasvand;
            }
            return filename;
        }
اگر اسم تکراری باشه ، یکدونه 1 به انتها فایل اضافه میشه .
نمیدونم چطور در کدهای خودم ازش استفاده کنم.:ناراحت:قاطی می کنم.
کل کدهای قسمت ذخیره سازی تصویر بدین شکل هست :
 //Save Pic-1
        string filename1 = "";
        string filename2 = "";
        if (FileUpload1.PostedFile != null)
        {
            // Check the extension of image  
            string extension = Path.GetExtension(FileUpload1.FileName);
            if (extension.ToLower() == ".png" || extension.ToLower() == ".jpg")
            {
                Stream strm = FileUpload1.PostedFile.InputStream;
                //filename1 = System.DateTime.Now.ToString("yyyyMMddhhmmss") + FileUpload1.FileName;
                //filename1 = System.DateTime.Now.ToString("yyyyMMddhhmmss");
                using (var image = System.Drawing.Image.FromStream(strm))
                {
                    int newWidth = 240; // New Width of Image in Pixel  
                    int newHeight = 240; // New Height of Image in Pixel  
                    var thumbImg = new Bitmap(newWidth, newHeight);
                    var thumbGraph = Graphics.FromImage(thumbImg);
                    thumbGraph.CompositingQuality = CompositingQuality.HighQuality;
                    thumbGraph.SmoothingMode = SmoothingMode.HighQuality;
                    thumbGraph.InterpolationMode = InterpolationMode.HighQualityBicubic;
                    var imgRectangle = new Rectangle(0, 0, newWidth, newHeight);
                    thumbGraph.DrawImage(image, imgRectangle);
                   
                    //Create Random Numbers
                    Random r = new Random();
                    string n = r.Next().ToString();
                    
                    // Save the file  
                    filename1 = n + FileUpload1.FileName;
                    FileUpload1.SaveAs(Server.MapPath("~\\img\\Home\\") + filename1);
                    filename2 = n + FileUpload1.FileName;
                    thumbImg.Save(filename1, image.RawFormat);
                    //Show Image  
                    //Image1.ImageUrl = @"~\img\Home\" + FileUpload1.FileName;
                }
            }
            //else
            //{
            //    FileUpload1.Focus();
            //    ClientScript.RegisterStartupScript(Type.GetType("System.String"), "messagebox", "<script type=\"text/javascript\">alert('فرمت تصویر شما غیرمجاز می باشد/حجم تصویر رعایت نشده است.');</script>");
            //}
        }
filename1 نام فایل  و تصویر را در پوشه ذخیره می کنه ، filename2 فقط نام رو که بعد در جدول بانک insert می کنم.
Mahmoud.Afrad
یک شنبه 10 آبان 1394, 15:28 عصر
یک guid به نام فایل اضافه کنید
https://msdn.microsoft.com/en-us/library/system.guid%28v=vs.80%29.aspx
aminmousavi
یک شنبه 10 آبان 1394, 15:54 عصر
به ویژوال دسترسی ندارم اما به این شکل میشه تقریبا :
        if (FileUpload1.PostedFile != null)
        {
            // Check the extension of image  
            string extension = Path.GetExtension(FileUpload1.FileName);
 
 
            if (extension.ToLower() == ".png" || extension.ToLower() == ".jpg")
            {
                Stream strm = FileUpload1.PostedFile.InputStream;
                using (var image = System.Drawing.Image.FromStream(strm))
                {
 
 
                    int newWidth = 240; // New Width of Image in Pixel  
                    int newHeight = 240; // New Height of Image in Pixel  
                    var thumbImg = new Bitmap(newWidth, newHeight);
                    var thumbGraph = Graphics.FromImage(thumbImg);
                    thumbGraph.CompositingQuality = CompositingQuality.HighQuality;
                    thumbGraph.SmoothingMode = SmoothingMode.HighQuality;
                    thumbGraph.InterpolationMode = InterpolationMode.HighQualityBicubic;
                    var imgRectangle = new Rectangle(0, 0, newWidth, newHeight);
                    thumbGraph.DrawImage(image, imgRectangle);
                    
                     
                    // Save the file  
                    string ountputfolder=Server.MapPath("~\\img\\Home\\"  );
					string filename=CheckingFile(ountputfolder,FileUpload1.Fi leName);
					
					
                    FileUpload1.SaveAs(ountputfolder + filename);
                    thumbImg.Save(ountputfolder + filename, image.RawFormat);
                    //Show Image  
                    //Image1.ImageUrl = @"~\img\Home\" + FileName;
                }
            }
            //else
            //{
            //    FileUpload1.Focus();
            //    ClientScript.RegisterStartupScript(Type.GetType("S  ystem.String"), "messagebox", "<script type=\"text/javascript\">alert('فرمت تصویر شما غیرمجاز می باشد/حجم تصویر رعایت نشده است.');</script>");
            //}
        }
 
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.