3

ユーザーがリスト ボックスから選択した画像のサイズを取得しようとしています。画像ファイルは FTP サーバーで利用できます。ユーザーが選択できるように、リスト ボックスにファイル名を表示しています。選択すると、画像のプレビューを表示したいので、必要に応じてサイズを変更できるように寸法を取得します。

現在選択されているリスト項目にリンクされているファイル名を文字列変数に格納しています。私はサーバー上のそのパスを知っています。次のコードを使用して Image オブジェクトを作成していますが、うまくいきません

try
{
     string dir = Session["currentUser"].ToString();
     System.Drawing.Image img = System.Drawing.Image.FromFile("~/Uploads/"+dir+"/"+fName, true);     //ERROR here, it gives me file URL as error message!
}
catch(Exception ex)
{
     lbl_Err.Text = ex.Message;
}

何がうまくいかないのかわからない。何か案は?

4

1 に答える 1

10

Server.MapPathサーバーから画像を取得するために使用します。
次のように

System.Drawing.Image img = 
      System.Drawing.Image.FromFile(Server.MapPath("Uploads/"+dir+"/"+fName), true);  

以下も使用できます

  • Server.MapPath(".") は、実行中のファイル (aspx など) の現在の物理ディレクトリを返します。
  • Server.MapPath("..") は親ディレクトリを返します
  • Server.MapPath("~") は、アプリケーションのルートへの物理パスを返します
  • Server.MapPath("/") は、ドメイン名のルートへの物理パスを返します (アプリケーションのルートとは必ずしも同じではありません)。

Server.MapPath
(".")、Server.MapPath("~")、Server.MapPath(@"\")、Server.MapPath("/") を参照します。違いはなんですか?

于 2013-04-09T08:37:08.750 に答える