0

我完成了一项任务,其中可以使用日历选择 csv 文件并下载表单 FTP。

目前我已经预定义了本地驱动器路径来保存 csv 文件。

我需要显示 pop 以进行保存,因为用户必须根据需要保存到任何位置。

private void Download()
{
  System.DateTime myDate = new System.DateTime();
  myDate = caldownload.SelectedDate;
  System.DateTime myDate1 = new System.DateTime();
  myDate1 = Calendar1.SelectedDate;
  string sdate;
  string edate;
  TextBox1.Text = myDate.ToString("yyyy-MM-dd");
  TextBox2.Text = myDate1.ToString("yyyy-MM-dd");
  DateTime d1 = myDate.Date;
  DateTime d2 = myDate1.Date;
  TimeSpan sum = d2 - d1;

  int NrOfDays = sum.Days;
  NrOfDays++;

  int k = NrOfDays;
  string[] fileName = new string[k];

  //increment for days
  int s = myDate.Day;

  FtpWebRequest reqFTP;
  try
  {
    if (NrOfDays<=7)
    {
      for (k = 0; k <= NrOfDays; k++)
      {
        fname[i] = myDate.ToString("yyyy-MM-dd");
        fileName[k] = myDate.ToString("yyyy-MM-dd");

        //files to save local drive
        FileStream outputStream = new FileStream("F:\\ch" + "\\" + fname[i]+".csv", FileMode.Create);
        reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://" + "192.162.1.152" + "//" + "[100]" + "//" + fileName[k] + ".csv"));

        reqFTP.Method = WebRequestMethods.Ftp.ListDirectory;
        reqFTP.Method = WebRequestMethods.Ftp.DownloadFile;
        reqFTP.UseBinary = true;
        reqFTP.Credentials = new NetworkCredential("", "");
        FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();

        Stream ftpStream = response.GetResponseStream();
        long cl = response.ContentLength;
        int bufferSize = 2048;
        int readCount;
        byte[] buffer = new byte[bufferSize];

        readCount = ftpStream.Read(buffer, 0, bufferSize);
        while (readCount > 0)
        {
          outputStream.Write(buffer, 0, readCount);
          readCount = ftpStream.Read(buffer, 0, bufferSize);
        }

        myDate = myDate.AddDays(1);

        ftpStream.Close();
        outputStream.Close();
        response.Close();
      }
    }
    else
    {
      ScriptManager.RegisterStartupScript(this, this.GetType(), "message", "alert('You are allowed to download files for maximum of 7 days .');location.href = 'Default.aspx';", true);
    }
  }
  catch (Exception ex)
  { }
}
4

1 回答 1

2

您可以添加一个SaveFileDialog以从用户那里检索文件的名称。

例如:

        string sFileNameToSaveAs = "";

        using (var dialog = new SaveFileDialog())
        {
            dialog.AddExtension = true;
            dialog.Filter = "CSV Files (*.csv) | *.csv";
            dialog.Title = "Select the file name to save as";
            dialog.InitialDirectory = "C:\\";
            dialog.CheckPathExists = true;
            dialog.DefaultExt = ".csv";
            dialog.ValidateNames = true;

            if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                sFileNameToSaveAs = dialog.FileName;
            }
        }

        if (!string.IsNullOrEmpty(sFileNameToSaveAs))
        {
            FileStream outputStream = new FileStream(sFileNameToSaveAs, FileMode.Create);
            // The rest of your retrieval code goes here
        }
于 2011-12-21T04:28:22.230 回答