2009-03-06 7 views
0

FileUploadコントロールでは、SaveAs()メソッドでルートディレクトリを指定する必要があります。しかし、アップロードされたファイルは、「〜/ UserFiles/[username]/[filename]」などの仮想ディレクトリに格納されます。それを達成する方法はありますか?FileUploadsとルートディレクトリ

+0

アップロードは、Webサーバーからアクセス可能なフォルダに直接行くとき、あなたがやっていることに注意してください。あなたが重大な脆弱性を開いているようです。 –

答えて

4

はMapPathの方法のページを使用します。

この場合の使用では

ctl.SaveAs(Server.MapPath("~/UserFiles/[username]/[filename]")); 
+0

ありがとうございます。今はすべてが理にかなっています。 –

+0

ummm。 。 。既に存在していない場合、 "〜/ userdata/[username]"を作成する方法はありますか? –

+0

System.IO.Directory.CreateDirectory(MapPath( "〜/ userdata/[username]")); – AnthonyWJones

0

いいえ、キーワードは必須です。ダウンロード後にスクリプトを使用してファイルをコピーすることができます。時々、MapPathのが直接アクセスすることはできません

ctl.SaveAs(MapPath("~/UserFiles/[username]/[filename]")); 
+0

Hmmm。このコントロールのルートディレクトリを必要とする理由は何ですか?私には狂っているようだ。 –

+0

合理的には、ファイルシステムに保存しているので、物理的なファイルパスです。 URL内のパスは物理パスではない論理パスです。かなり多くの場合、ウェブサイトを表すフォルダの外にファイルが保存されます。 – AnthonyWJones

+0

うん。しかし、私の場合、ユーザーはファイルが保存されている場所を制御することはできません。私のプログラムだけがします。 –

0

- :

+0

"〜/ userdata/[username]"がまだ存在しない場合は作成する手段がありますか? –

関連する問題