2012-05-09 3 views
0

엑셀 파일을 데이터베이스에 복사하고 싶습니다. 내가 가지고있는 문제는 코드 - 비하인드에서 경로를 복사하는 것 같다.ASP : 내 코드 숨김 방법으로 파일 경로 전체 복사하기

string path = @"C:\Users\moynik\Desktop\datatest.xls"; 

을하지만 난 다음 줄을 사용하는 경우 난 단지 작동하지 않습니다 다른 경로를 얻을 :

<asp:FileUpload id="FileUploadControl" runat="server" /> 
    <asp:Button runat="server" id="UploadButton" text="Upload" onclick="UploadButton_Click" /> 
    <br /><br /> 
    <asp:Label runat="server" id="StatusLabel" text="Upload status: " /> 

는 경로 I 하드 코드는 다음 내 코드가 작동하는지 : 이것은 내 ASP 코드 .

string path = Path.GetFullPath(FileUploadControl.FileName); 

하지만 내 경로를 동적으로 만들어야 사용자가 다른 컴퓨터에서 업로드 할 수 있습니다. 누구든지 나를 도울 수 있습니까? 이것은 작동하고 데이터베이스 파일을 Excel 파일로 복사하는 기능입니다.

이것이 불가능할 경우 누군가가 해결책을 찾으면 도움을 줄 수 있습니다. 감사합니다

protected void UploadButton_Click(object sender, EventArgs e) 
{ 
    if (FileUploadControl.HasFile) 
    { 
     try 
     { 
      string path = @"C:\Users\moynik\Desktop\datatest.xls"; 
      string connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + ";Extended Properties=Excel 8.0;"; 



    using (OleDbConnection connection = new OleDbConnection(connStr)) 
      { 
       OleDbCommand command = new OleDbCommand ("Select Name,Address,Age FROM [Sheet1$]", connection); 

       connection.Open(); 

       using (DbDataReader dr = command.ExecuteReader()) 
       { 
        string sqlConnectionString = "SERVER=<servername>;UID=schafc;Trusted_Connection=Yes;DATABASE=<dbname>;"; 

        using (SqlBulkCopy bulkCopy = new SqlBulkCopy(sqlConnectionString)) 
        { 
         bulkCopy.DestinationTableName = "<tableName>"; 
         bulkCopy.WriteToServer(dr); 
        } 
       } 
      } 
      StatusLabel.Text = "Upload status: File uploaded!"; 
     } 
     catch (Exception ex) 
     { 
      StatusLabel.Text = "Upload status: The file could not be uploaded. The following error occured: " + ex.Message; 
     } 
    } 
} 
+0

사용자가 선택할 수 있도록 경로 구조와 같은 웹 페이지를 제공해야 할 수도 있습니다. –

답변

1

.GetFullPath 대신 Path.GetFileName(FileUploadControl.FileName)을 시도하십시오.

http://asp.net-tutorials.com/controls/file-upload-control/

편집 : 아, 난 그냥 당신이 뭘 하려는지 알아 근무했습니다. xls 파일을 서버 위치에 먼저 업로드 한 다음 서버의 파일 경로를 연결 문자열에 전달해야합니다.

1

는 FileUpload 컨트롤은 클라이언트 측에서 서버 측 제어,

Path.GetFullPath(FileUploadControl.FileName); 

가 서버에서 실행되는 코드 및 아니다. "내 경로를 동적으로 만들어야 사용자가 다른 컴퓨터에서 다른 컴퓨터로 파일을 업로드 할 수 있어야합니다."라는 의미가 확실하지 않습니다. 사용자는 언제든지 컴퓨터의 모든 대상에서 파일을 선택할 수 있습니다.

1

어딘가에 저장할 때까지 서버 디스크에 파일이 실제로 존재하지 않습니다. FileUpload.SaveAs Method에 대한 MSDN 설명서를 참조하십시오. 수동으로 지정된 경로가 작동하는 유일한 이유는 앱이 내 컴퓨터에 있고 따라서 파일에 액세스 할 수 있기 때문입니다. 실제로 하드 코드 된 경로로 수행중인 작업은 업로드 컨트롤을 완전히 비우는 것입니다.

string path = Path.Combine(@"C:\MyUploadDirectory", FileUploadControl.FileName); 
FileUploadControl.SaveAs(path); 
string connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + ";Extended Properties=Excel 8.0;"; 
관련 문제