2013-05-17 36 views
3

我想知道,目前,客户端上传文件到服务器上的一个目录,然后服务器可以使用该文件(csv文件)来更新SQL数据库。服务器可以使用客户端上的文件而不上传到服务器吗? ASP.NET

这是服务器可以使用该文件的唯一方法吗?它首先被上传到服务器?或者你可以使用该文件而不上传到服务器的目录?

(使用的Visual Studio 2012,C#和asp.net)

代码更新---

ASP上传文件。 (我知道的代码可以是书面更好的清洁,但我的测试代码是从来没有干净的)

   //Uplod file to the server 
       FileUpload1.SaveAs(serverUploadDir + FileUpload1.FileName); 

       //Use the Uploaded File to update the sql table 
       dbConn.UploadCSVToSql(serverUploadDir + FileUpload1.FileName); 

的UploadCSVToSql

public void UploadCSVToSql(string filepath) 
     { 
      //string filepath = "C:\\Copy of ABI Employee List.csv"; 
      StreamReader sr = new StreamReader(filepath); 
      string line = sr.ReadLine(); 
      string[] value = line.Split(','); 
      DataTable dt = new DataTable(); 
      DataRow row; 
      foreach (string dc in value) 
      { 
       dt.Columns.Add(new DataColumn(dc)); 
      } 

      while (!sr.EndOfStream) 
      { 
       value = sr.ReadLine().Split(','); 
       if (value.Length == dt.Columns.Count) 
       { 
        row = dt.NewRow(); 
        row.ItemArray = value; 
        dt.Rows.Add(row); 
       } 
      } 
      SqlBulkCopy bc = new SqlBulkCopy(conn.ConnectionString, SqlBulkCopyOptions.TableLock); 
      bc.DestinationTableName = "MainDump"; 
      bc.BatchSize = dt.Rows.Count; 
      conn.Open(); 
      bc.WriteToServer(dt); 
      bc.Close(); 
      conn.Close(); 
+0

Mayby你可以尝试解析该文件在C#程序并执行SQL在C#中也... – Mathlight

+0

你可以只读取文件中的数据和你需要使用一个StreamReader做什么() (或类似)。您也可以使用正确的权限(显然它不在服务器上)读取LAN上的文件(显然)。 – Dave

+0

您不需要将其上传到目录,您可以将其发回服务器并将其存储在内存中 –

回答

4

我没有看到如何从客户端上传文件到服务器而不上传文件,但不需要将文件存储到文件夹中。如果您使用

<asp:FileUpload ID="fuMyUpload" runat="server" /> 

控制。你可以获取流中的数据并将其存储在内存中。

if (!fuMyUpload.HasFile) 
    { 
     lblWarning.Text = "No file Selected"; 
     return; 
    } 

    var csvData = Encoding.UTF8.GetString(fuCircuitCsv.FileBytes); 

    using (var reader = new StringReader(csvData)) 
    { 
      var headers = reader.ReadLine().Split(','); 
      while ((line = reader.ReadLine()) != null) 
      { 
       var fields = line.Split(','); 
      } 
    } 
+0

啊,这几乎正是我想要的..我现在试着这个,会让你知道它是如何工作的,谢谢 – Ruan

+0

@Ruan Cool,希望它有效。 –

+0

可以确认此作品,谢谢 – Ruan

0

如果您有监控的服务器上运行的后台作业任何CSV文件的文件夹,然后它需要上传到服务器。如果不是这种情况,那么您应该只能用C#处理文件并执行数据库更新。

相关问题