将图像保存在服务器的文件系统上

时间:2011-07-02 14:14:05

标签: c# asp.net

我得到的代码可以帮助我将图像保存到服务器文件系统:

      if (FileUpload1.HasFile)
    {

        string ImgName = FileUpload1.FileName;

        FileUpload1.SaveAs(Server.MapPath("~").ToString() + "\\" + ImgName);

        Stream imgStream = FileUpload1.PostedFile.InputStream;

        Bitmap bmThumb = new Bitmap(imgStream);

        System.Drawing.Image im = bmThumb.GetThumbnailImage(100, 100, null, IntPtr.Zero);

        im.Save(Server.MapPath("~").ToString() + "\\ThumbNail_" + ImgName);

    }

我不知道为什么他们将图像转换为缩略图..我只需要将图像保存到文件系统并作为小图像(对于头像)进行检索。

我在我的数据库中将文件名保存为nvarchar(50)。

我的问题是如何从文件系统中检索图像。 (我可以从数据库中获取其路径,即:Server.MapPath("~").ToString() + "\\ThumbNail_" + ImgName

我需要做的就是:

ImageControl1.imageUrl=Server.MapPath("~").ToString() + "\\ThumbNail_" + ImgName; 

图像是否会出现在我的ImageControl中。

你能否批评我的代码并添加它...因为这是我第一次尝试从文件系统保存和检索。

我的visual studio 2010本地服务器上是否所有这些处理都可以使用?

2 个答案:

答案 0 :(得分:1)

缩略图会减少您的实际图像,因此它会显示在您网站的头像上而不会出现任何失真。您也可以在不创建缩略图的情况下使用图像,但用户将以不同的比例(宽度和高度)上传图像,在显示时可能会失真。因此缩略图将使所有上传图像的比例尺寸。

答案 1 :(得分:0)

Server.MapPath提供服务器上图像的绝对路径。为了向客户端提供图像,您需要相对路径。因此,您可以尝试使用ResolveUrl方法:

ImageControl1.ImageUrl = ResolveUrl("~/ThumbNail_" + ImgName); 

或者如果我没记错,Image控件已经执行了此操作,您无需显式调用ResolveUrl,因此以下内容也可能有效:

ImageControl1.ImageUrl = "~/ThumbNail_" + ImgName;