sqlBulkはC#

c# csv sqlbulkcopy

質問

私は自分のコンピュータからサーバー上のデータベースにCSVファイルをアップロードするページを持っていて、次のような私のopentextを持っています

using (StreamReader sr = File.OpenText(@"c:\users\workstationUsername\FileName.csv"))

これはローカルマシンで正常に動作しますが、サーバーにプッシュするとサーバーのCドライブを読み取ろうとしますが、ユーザーがクリックしたときにサーバーではなくユーザーのコンピューターのデスクトップにある物理的なファイルの場所を読み取るようにします閲覧とアップロード..ありがとう

以下は完全なコードです:

if (IsPostBack)
{

   // SetDefaultDates();
   Boolean fileOK = false;
   String dateString = DateTime.Now.ToString("MMddyyyy");
   String UserName = User.Identity.Name;
   String path = Server.MapPath("~/Uploads/CSVs/");

   string stringpath = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory);

   String fileName = System.IO.Path.GetFileName(FileUpload1.PostedFile.FileName);
   stringpath = stringpath + fileName; 
   String LocationToSave = path + "\\" + fileName;
   if (FileUpload1.HasFile)
   {
       String fileExtension =
                System.IO.Path.GetExtension(FileUpload1.FileName).ToLower();
       String[] allowedExtensions = { ".csv" };
       for (int i = 0; i < allowedExtensions.Length; i++)
       {
           if (fileExtension == allowedExtensions[i])
           {
               fileOK = true;
           }
       }
   }

   if (fileOK)
   {
       try
       {
           //FileUpload1.PostedFile.SaveAs(LocationToSave + dateString + "-" + FileUpload1.FileName);
           FileUpload1.PostedFile.SaveAs(LocationToSave);
           Label1.Text = "File " + FileUpload1.FileName + " uploaded!";

           DataTable dt = new DataTable();
           string line = null;
           int i = 0;

           using (StreamReader sr = File.OpenText(stringpath)) 
           {
               while ((line = sr.ReadLine()) != null)
               {
                   string[] data = line.Split(',');
                   if (data.Length > 0)
                   {
                       if (i == 0)
                       {
                           foreach (var item in data)
                           {
                               dt.Columns.Add(new DataColumn());
                           }
                           i++;
                       }
                       DataRow row = dt.NewRow();
                       row.ItemArray = data;
                       dt.Rows.Add(row);
                   }
               }
           }

           using (SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["Myconnection"].ConnectionString))
           {
               cn.Open();
               using (SqlBulkCopy copy = new SqlBulkCopy(cn))
               {
                   copy.WriteToServer(dt);
               }
           }
       }
       catch (Exception ex)
       {
           Label1.Text = "File " + FileUpload1.FileName + " could not be uploaded." + ex.Message;
       }
   }
   else
   {
       Label1.Text = "Cannot accept files of this type. " + FileUpload1.FileName;
   }
}
SetDefaultDates();
}

人気のある回答

FileUploadコントロールを使用している場合、サーバーのハードドライブを不明瞭に指し示している(StreamReader sr = File.OpenText(@"c:\users\workstationUsername\FileName.csv"))代わりに、これを行うことができます。

(StreamReader sr = new StreamReader(fileUploadControl.FileContent))
    //Do your stuff


ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ