2013-05-30 18 views
12

アップロードしたファイルをHttpPostedFileBase.SaveAs()という方法で物理パスに保存したいと思います。アップロードしたファイルを物理パスにHttpPostedFileBase.SaveAsで保存する

物理パスを選択すると、パスが仮想である必要があることを示す例外が表示されます。

var fileName = Path.GetFileName(fileurl.FileName); 
var path = "C:/Projets" + fileName; 
fileurl.SaveAs(Server.MapPath(path)); 

私のコードを変更して、必要な場所にファイルを保存できるようにするにはどうすればよいですか?

+0

私はそれが可能ではないと思います。 IISは、アプリケーションプール内でアプリケーションを実行し、サンドボックスとみなします。その領域にアクセスする権限しかありません。 – Belogix

+0

@Belogixしかし、私はその領域にファイルを保存するので、私はそれを削除する権限を持っていないし、そこに新しいディレクトリやファイルを作成するためにも、アプリケーションプールProcessusのアクセス許可を変更することができます – Lamloumi2

答えて

18

Server.MapPathは、ウェブサイトの一部である物理的な場所でのみ動作します。あなたが外にファイルを保存したい場合は、以下を使用することができます。

var fileName = Path.GetFileName(fileurl.FileName); 
fileurl.SaveAs(Path.Combine(@"c:\projects", fileName)); 

アプリケーションプールが実行されているアカウントがこのフォルダに書き込み権限が付与されていることを確認してくださいのに。

1

Server.MapPathは仮想パス用です。 Path.GetFullPath(path)を使用することができます。

関連する問題