0

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

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

しかし、どうすればこのパスを取得できますか? このファイルは、ユーザーのマシンのどこにでもある可能性があります!

ありがとう!!

4

3 に答える 3

4

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

代わりに、アップロードされた 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
    }
}
于 2009-06-20T02:54:07.493 に答える
1

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またはジェネリックに保存することもできます。List<String>

于 2009-06-20T02:41:41.027 に答える
0
var hpf = Request.Files[file] as HttpPostedFile; 

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

于 2009-06-20T04:22:21.903 に答える