PDA

View Full Version : سوال: مشکل در ذخیره تاریخ به همراه نام تصویر؟



پیام حیاتی
یک شنبه 10 آبان 1394, 00: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, 12: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, 12:28 عصر
من روشی که استفاده میکنم اینه که کلا اسم عکس رو عوض میکنم و طبق یه فرومولی که قطعا تکراری نمیشه ذخیره میکنم مثلا

1510109166_Orig.jpg


توام بتره برای خودت یه فرمول بسازی

aminmousavi
یک شنبه 10 آبان 1394, 13: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, 13: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, 13:55 عصر
با رندم احتمال تکراری بودن رو کم میکنید ، اما شانس تکراری بودن داره .

پیام حیاتی
یک شنبه 10 آبان 1394, 14: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, 14:28 عصر
یک guid به نام فایل اضافه کنید
https://msdn.microsoft.com/en-us/library/system.guid%28v=vs.80%29.aspx

aminmousavi
یک شنبه 10 آبان 1394, 14: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>");
//}
}