2016-09-23 6 views
-1

私は1つのMVC4アプリケーションを開発し、IIS Webサーバーでホスティングしています。mvc4にフォルダを作成するには

UploadedFileというフォルダ内に、Fドライブ内のファイルをほとんどアップロードして保存しません。 私はしかし、それは

if (!System.IO.Directory.Exists(Server.MapPath("~/F:/UploadedFile"))) 
{ 
    System.IO.Directory.CreateDirectory(Server.MapPath("~/F:/UploadedFile")); 
} 

私はIISにホストしていたとき、私はinetpub(DLLなどのファイル(ビン)、CSS、JSなど)内のすべてのパブリッシュされたファイルを保持しますが動作しないフォルダを作成するために、コードの一部の下に書いています。しかし、私は、Fドライブにユーザーがアップロードしたpdfファイルを保存する予定です。

cの外部にファイルを保存するのがよいでしょうか?いくつかの提案をお願いします。

+0

どこでもファイルを保持するrpobはありません。 virualディレクトリを作成し、ウェブサイト – Imad

+0

でそれをマップします。これは見つかりましたが、文字列folderName = @ "F:\ UploadedFile"という文字列でした。 if(!System.IO.Directory.Exists(folderName)) { System.IO.Directory.CreateDirectory(folderName); } –

+0

ただし、このコード行は機能していません。string folderName = @ "F:\ UploadedFile"; バイト[] bytes = System.IO.File.ReadAllBytes(folderName + filename); –

答えて

0

セキュリティとACLを適切に設定している限り、ファイルをWebフォルダの外に置いても問題ありません。このようなことは自明ではなく、正しく設定しないとセキュリティの問題で終わることがあります。

あなたのケースでは、ファイルからデータを取得しようとすると間違ったパスを取得していると思います。この行で

System.IO.File.ReadAllBytes(folderName + filename); 

フォルダ名+ファイル名は@"F:\UploadedFile<filename>"を返します。 (例:@"F:\UploadedFilefile1.docx")、無効なパスであるためエラーが表示されます。

この種のエラーを回避するには、Path.Combineを使用する必要があります。

using System.IO; 

//this will return @"F:\UploadedFile\file1.docx" 
var fullFileName = Path.Combine(folderName, fileName); 
var bytes= System.IO.File.ReadAllBytes(fullFileName); 

//do something with your file. 

関連する問題