with net mvc example aspnet asp c# asp.net upload client-side server-side

net - upload file mvc c# ajax



¿Puede el servidor usar un archivo de un cliente sin subirlo al servidor? ASP.NET (2)

No veo cómo obtendría un archivo del cliente en el servidor sin cargarlo, pero no necesita almacenarlo en una carpeta. Si usas el

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

controlar. puede obtener los datos en una secuencia y almacenarlos en la memoria.

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('',''); } }

Me preguntaba, por el momento, que el cliente carga un archivo en un directorio en el servidor donde el servidor puede usar el archivo (archivo csv) para actualizar una base de datos SQL.

¿Es esa la única forma en que el servidor puede usar ese archivo? Para que primero se cargue en el servidor? ¿O puede usar ese archivo sin cargarlo en un directorio del servidor?

(usando Visual Studio 2012, C # y asp.net)

Actualización de código ---

asp Cargando el archivo. (Sé que el código puede ser más limpio y está mejor escrito, pero mi código de prueba nunca está limpio)

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

El 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();


Si tiene un trabajo en segundo plano ejecutándose en el servidor que supervisa la carpeta para cualquier archivo CSV, entonces debe cargarse en el servidor. Si ese no es el caso, entonces debería poder procesar el archivo en C # solamente y realizar la actualización de la base de datos.