2009-06-20 3 views
0

내 ASP.NET MVC 웹 사이트에서 ';'으로 구분 된 일부 이름과 이메일을 가진 txt 파일을 읽어야합니다. 그 후에이 txt 파일의 각 줄을 데이터베이스에 저장해야합니다.C# 3.0에서 전체 경로 파일을 업로드하려면 어떻게해야합니까?

인터넷 검색은 일부 스 니펫을 발견했지만 모두 txt 파일 경로를 사용해야합니다.

하지만 어떻게이 경로를 얻을 수 있습니까? 이 파일은 사용자의 컴퓨터 어디에나있을 수 있습니다!

감사합니다.

+0

는 ASP.NET 웹 사이트에 대해이 작업을인가해야합니까? – heavyd

+0

ASP.NET MVC, heavyd. – AndreMiranda

+0

@Jacob - 사용자가 txt 파일을 선택하고 특정 버튼을 클릭하면 Action이 호출됩니다. 이 작업에서는이 txt 파일의 모든 데이터를 읽고 데이터베이스에 저장해야합니다. – AndreMiranda

답변

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 
    } 
} 
+0

Jacob, 고마워! 나는 이미이 방향으로 가고 있었다! :-) 데이터베이스에 저장하고 있지만, 이제는 " '", "~"등과 같은 특수 문자에 문제가 있습니다. – AndreMiranda

+0

인코딩을 사용하는 것을 잊었습니다. 모든 것에 감사드립니다! – AndreMiranda

1

asp.net 웹 페이지 모델을 사용하는 경우 Server.MapPath("~/")은 사이트의 루트를 얻는 데 도움이되므로 필요한 경로를 전달하십시오. 당신이 그것을 일단 당신이 그것을 위해 StreamReader 수

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

그냥에서 읽으려면 :

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()); 
    } 
} 
당신은 텍스트 파일이 저장되는 폴더 예를 들어

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

를 호출해야 할 수도 있습니다

데스크톱 응용 프로그램의 경우 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>에 저장할 수 있습니다.

+0

안녕하세요! txt 파일을 저장할 필요가 없습니다. 그 내용을 읽고 데이터베이스에 저장하기 만하면됩니다. – AndreMiranda

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

되는 HTML의 형태는 enctype="mulitipart/form-data"

관련 문제