C#3.0でアップロードされたファイルのフルパスを取得するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/1020789

質問

ASP.NET MVC Webサイトでは、「;」で区切られた名前とメールを含むtxtファイルを読み取る必要があります。その後、このtxtファイルの各行をデータベースに保存する必要があります。

グーグルでいくつかのスニペットを見つけましたが、それらのすべてでtxtファイルのパスを使用する必要があります。

しかし、どうすればこのパスを取得できますか?このファイルはユーザーのマシンのどこにあってもかまいません!

ありがとう!!

役に立ちましたか?

解決

アップロードされたファイルの完全なパスを取得することはできません。これは、ファイルをアップロードしたユーザーのプライバシー違反になります。

代わりに、アップロードされたRequest.Filesを読む必要があります。例:

HttpPostedFile file = Request.Files[0];
using (StreamReader reader = new StreamReader(file.InputStream))
{
    while ((string line = reader.ReadLine()) != null) 
    {
        string[] addresses = line.Split(';');
        // Do stuff with the addresses
    }
}

他のヒント

asp.net Webページモデルを使用している場合、Server.MapPath("~/")はサイトのルートを取得するために機能するため、必要なパスを渡します。呼び出す必要があるかもしれません

HttpContext.Current.Server.MapPath("~/");

たとえば、テキストファイルが保存されるフォルダー:

string directoryOfTexts = HttpContext.Current.Server.MapPath("~/txtdata/");

一度取得したら、それをStreamReaderで読むことができます:

string directoryOfTexts = HttpContext.Current.Server.MapPath("~/txtdata/");
string path = directoryOfTexts + "myfile.txt";
string alltextinfile = "";
if (File.Exists(path)) 
{
    using (StreamReader sr = new StreamReader(path)) 
    {
       //This allows you to do one Read operation.
       alltextinfile = sr.ReadToEnd());
    }
}

これがデスクトップアプリケーション用である場合、Applcationクラスには次のすべての情報が含まれます。

http://msdn.microsoft .com / en-us / library / system.windows.forms.application.startuppath.aspx

Application.StartupPath

すべてのプロパティには他のappdataフォルダーやものがリストされますが、実行可能ファイルへのアプリケーションパスを取得すると、Application.LocalUserAppDataPathなどのコンテキストが表示されます。

http://msdn.microsoft.com /en-us/library/system.windows.forms.application_properties.aspx

コンテンツが十分に小さい場合は、データベースに保存する前にHashTableまたはGeneric List<String>に保存することもできます。

var hpf = Request.Files[file] as HttpPostedFile; 

HTMLのフォームにはenctype="mulitipart/form-data"

が必要です
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top