C#3.0でアップロードされたファイルのフルパスを取得するにはどうすればよいですか?
-
06-07-2019 - |
質問
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"