2011-07-01 10 views
0

私のホストは、以下の構造を有するファイル:保存ファイルは

/ウェブを - >サイトのコンテンツである場合は /データ - >フォルダのアクセス権が読み書きする

方法ファイルをDataフォルダにアップロードするにはどうすればよいですか? "〜"は/ webディレクトリを返しますので、以下のコードは機能しません。

//Save Image 
var serverPath = Server.MapPath(Href("~/Data/") + id); 
Directory.CreateDirectory(serverPath); 
imgOri.Save(Path.Combine(serverPath, fileName)); 

答えて

2

Server.MapPath()は、パスをアプリケーションのルートディレクトリまでマップするように設計されています。ルートの上にファイルをアップロードしようとすると、それは動作しません。

(ホストはそれを提供できる場合)あなたは、正確なファイルパスを指定することにより、ルート上のファイルをアップロードすることができます

するvar serverPath = "C:\ YourFolder \データ\")+ ID);

あなたのホストは、ルートディレクトリの外にファイルをアップロードできることに驚いています。これにはいくつかの危険性があります...あなたは信頼の問題に遭遇するかもしれません。

+0

イメージを関連付ける方法 または ridermansb

+0

イメージをレンダリングするには、ハンドラを作成する必要があります。 http://www.dotnetperls.com/ashx –

1

あなたは以下のようにServer.MapPathのを使用して、サイトのルートの同じレベルで座っているディレクトリへのパスを取得することができます。ルートの外に「データ」のディレクトリを提供するために使用する企業をホスティング

@{ 
    var root = Server.MapPath("."); 
    var temp = root.Split('\\'); 
    temp[temp.Length - 1] = "Data"; 
    var newpath = string.Join("\\", temp); 
} 

Access mdbデータベースのようなもののための安全な場所として。サイトのルート外にあるディレクトリを直接参照することはできません。 ASP.NETは、App_Dataの導入により、これらのことの必要性をなくしました。この種のフォルダを使用する唯一の理由は、ディレクトリの内容を処理する前にある種の認証を適用する場合です。次に、ハンドラを使用するか、単純なcshtmlファイルを使用する必要があります。 WebSecurityヘルパーとWebImageヘルパーを組み合わせて最初にユーザーを認証し、テストに合格するとイメージを取得して表示することができます。 imgタグのsrcは、クエリーコードまたはUrlDataという値を持つcshtmlファイルを指しますので、表示するイメージを知ることができます。

イメージを表示する前にユーザーを検証する必要がない場合は、イメージファイルをルート外に保存すると、不必要な複雑さが加わります。

関連する問題