簡體   English   中英

使用C#asp.net無法獲得正確的文件路徑

[英]Not getting proper file path using c# asp.net

我正在嘗試顯示一些圖像,這些圖像是使用c#asp.net從數據庫中獲取的,但出現了一些錯誤。

錯誤:

“ /”應用程序中的服務器錯誤。

C:\\ ASP project \\ Odiya_Doctor_Client \\ Odiya_Doctor_Client \\ ODIYA_Doctor_Admin \\ Upload \\ Banner \\ 2015-07-09_01-50-41-PM_Medical-banner-with-icons.jpg

說明:執行當前Web請求期間發生未處理的異常。 請查看堆棧跟蹤,以獲取有關錯誤及其在代碼中起源的更多信息。

異常詳細信息:System.IO.FileNotFoundException:C:\\ ASP project \\ Odiya_Doctor_Client \\ Odiya_Doctor_Client \\ ODIYA_Doctor_Admin \\ Upload \\ Banner \\ 2015-07-09_01-50-41-PM_Medical-banner-with-icons.jpg

我在下面解釋我的代碼。

的Index.aspx:

<img runat="server" id="imgCtrl" src='<%# resizeAndConvertToBase64("/ODIYA_Doctor_Admin/Upload/Banner/" + Convert.ToString(Eval("Bnr_Image")),1920,680) %>' class="ls-bg" />

index.aspx.cs:

protected string resizeAndConvertToBase64(string imageDirectory, int newWidth, int newHeight)
        {
            Bitmap newImage = new Bitmap(newWidth, newHeight);
            System.Drawing.Image srcImage = System.Drawing.Image.FromFile(Server.MapPath(imageDirectory));
            using (Graphics gr = Graphics.FromImage(newImage))
            {
                gr.SmoothingMode = SmoothingMode.HighQuality;
                gr.InterpolationMode = InterpolationMode.HighQualityBicubic;
                gr.PixelOffsetMode = PixelOffsetMode.HighQuality;
                gr.DrawImage(srcImage, new Rectangle(0, 0, newWidth, newHeight));

            }
            MemoryStream ms = new MemoryStream();
            newImage.Save(ms, ImageFormat.Gif);
            var base64Data = Convert.ToBase64String(ms.ToArray());
            return "data:image/gif;base64," + base64Data;
        }

實際上,我想訪問c:\\ASP\\ODIYA_Doctor_Admin\\Upload\\Banner文件夾中存在的一個圖像,但是在這里,我的inde.aspx頁面位於c:\\ASP\\Odiya_Doctor_Client\\Odiya_Doctor_Client文件夾中。 在錯誤消息中,路徑為C:\\ASP project\\Odiya_Doctor_Client\\Odiya_Doctor_Client\\ODIYA_Doctor_Admin\\Upload\\Banner\\2015-07-09_01-50-41-PM_Medical-banner-with-icons.jpg ,我要從此路徑進入刪除\\Odiya_Doctor_Client\\Odiya_Doctor_Client 因此,請幫助我解決此錯誤。

使用fileupload控件而不是server.mappath來確定文件位置,因為server.mappath總是在查看解決方案文件夾

private void getPicture()
 {
      string location = FileUpload1.PostedFile.FileName;
      resizeAndConvertToBase64(location, 100,100);
 }

 protected string resizeAndConvertToBase64(string imageDirectory, int newWidth, int newHeight)
    {
        Bitmap newImage = new Bitmap(newWidth, newHeight);
        System.Drawing.Image srcImage = imageDirectory;
        using (Graphics gr = Graphics.FromImage(newImage))
        {
            gr.SmoothingMode = SmoothingMode.HighQuality;
            gr.InterpolationMode = InterpolationMode.HighQualityBicubic;
            gr.PixelOffsetMode = PixelOffsetMode.HighQuality;
            gr.DrawImage(srcImage, new Rectangle(0, 0, newWidth, newHeight));

        }
        MemoryStream ms = new MemoryStream();
        newImage.Save(ms, ImageFormat.Gif);
        var base64Data = Convert.ToBase64String(ms.ToArray());
        return "data:image/gif;base64," + base64Data;
    }
I would suggest you to do this way:

1. Create a application setting:

      <appSettings >
        <add key="ImgFolderPath" value="c:\ASP\ODIYA_Doctor_Admin\Upload\Banner"/>
      </appSettings>
2. Change your aspx code:

    <img runat="server" id="imgCtrl" src='<%# resizeAndConvertToBase64( Convert.ToString(Eval("Bnr_Image")),1920,680) %>' class="ls-bg" />

3. Change your .cs page code:


protected string resizeAndConvertToBase64(string imageName, int newWidth, int newHeight)
            {
                Bitmap newImage = new Bitmap(newWidth, newHeight);
                string path = ConfigurationManager.AppSettings["ImgFolderPath"].ToString();
                System.Drawing.Image srcImage = System.Drawing.Image.FromFile(path+"/"+imageName));
                using (Graphics gr = Graphics.FromImage(newImage))
                {
                    gr.SmoothingMode = SmoothingMode.HighQuality;
                    gr.InterpolationMode = InterpolationMode.HighQualityBicubic;
                    gr.PixelOffsetMode = PixelOffsetMode.HighQuality;
                    gr.DrawImage(srcImage, new Rectangle(0, 0, newWidth, newHeight));

                }
                    MemoryStream ms = new MemoryStream();
                    newImage.Save(ms, ImageFormat.Gif);
                    var base64Data = Convert.ToBase64String(ms.ToArray());
                    return "data:image/gif;base64," + base64Data;
                }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM