[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Upload(Photo photo)
{
foreach (string file in Request.Files)
{
var path = "~/Uploads/Photos/";
HttpPostedFileBase posted = (HttpPostedFileBase)Request.Files[file];
if (posted.ContentLength > 0)
{
photo.Date = DateTime.Now;
photo.AlbumID = 1;
photo.Title = Path.GetFileName(posted.FileName);
photoRepository.Add(photo);
photoRepository.Save();
posted.SaveAs(Server.MapPath(path + photo.PhotoID + ".jpg"));
Image img1 = Image.FromFile(Server.MapPath("~/Uploads/Photos/") + photo.PhotoID + ".jpg");
imageHelper.CreateThumbnail(posted, img1);
int newWidth = 100;
int newHeight = 100;
double ratio = 0;
if (img1.Width > img1.Height)
{
ratio = img1.Width/(double)img1.Height;
newHeight = (int)(newHeight/ratio);
}
else
{
ratio = img1.Height/(double)img1.Width;
newWidth = (int)(newWidth/ratio);
}
Image bmp1 = img1.GetThumbnailImage(newWidth, newHeight, null, IntPtr.Zero);
bmp1.Save(Server.MapPath("~/Uploads/Photos/Thumbnails/") + photo.PhotoID + ".jpg");
img1.Dispose();
bmp1.Dispose();
}
}
return RedirectToAction("Index");
}
我想組織這樣的代碼更好一點,像這樣:C#新手問題,部分2 - 聲明類和方法
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Upload(Photo photo)
{
foreach (string file in Request.Files)
{
var path = "~/Uploads/Photos/";
HttpPostedFileBase posted = (HttpPostedFileBase)Request.Files[file];
ImageHelper imageHelper = new ImageHelper();
if (posted.ContentLength > 0)
{
photo.Date = DateTime.Now;
photo.AlbumID = 1;
photo.Title = Path.GetFileName(posted.FileName);
photoRepository.Add(photo);
photoRepository.Save();
posted.SaveAs(Server.MapPath(path + photo.PhotoID + ".jpg"));
Image img1 = Image.FromFile(Server.MapPath("~/Uploads/Photos/") + photo.PhotoID + ".jpg");
// Create thumbnail
imageHelper.CreateThumbnail(posted, img1);
}
}
return RedirectToAction("Index");
}
,在這裏,在助手文件夾我創建的類和方法將處理縮略圖:
public class ImageHelper
{
public void CreateThumbnail(HttpPostedFileBase posted, Image img1)
{
int newWidth = 100;
int newHeight = 100;
double ratio = 0;
if (img1.Width > img1.Height)
{
ratio = img1.Width/(double)img1.Height;
newHeight = (int)(newHeight/ratio);
}
else
{
ratio = img1.Height/(double)img1.Width;
newWidth = (int)(newWidth/ratio);
}
Image bmp1 = img1.GetThumbnailImage(newWidth, newHeight, null, IntPtr.Zero);
bmp1.Save(Server.MapPath("~/Uploads/Photos/Thumbnails/") + photo.PhotoID + ".jpg");
img1.Dispose();
bmp1.Dispose();
}
}
但我得到的編譯錯誤Server
(在bmp1.Save(Server.MapPath
ImageHelper類...行)不會在目前的情況下存在,而它工作正常,如果代碼在一個地方。
我在做什麼錯了,這是甚至正確的方式來聲明方法和組織代碼?
由於提前,
島
很好,它的工作原理... – 2010-03-26 16:09:26