服务器可以使用来自客户端的文件而不将其上传到服务器吗?ASP.NET
本文关键字:服务器 NET ASP 可以使 客户端 文件 | 更新日期: 2023-09-27 18:13:57
我想知道,在那一刻,客户端上传一个文件到服务器上的一个目录,服务器可以使用这个文件(csv文件)来更新SQL数据库。
这是服务器使用该文件的唯一方法吗?让它先上传到服务器?或者您可以使用该文件而不将其上传到服务器的目录中吗?
(使用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();
我不知道如何在不上传的情况下将文件从客户端获取到服务器,但是您不需要将其存储到文件夹中。如果你使用
<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(',');
}
}
如果您在服务器上运行后台作业,该作业监视文件夹中的任何CSV文件,则需要将其上传到服务器。如果不是这种情况,那么您应该能够仅用c#处理文件并执行数据库更新。