2011-12-21 7 views
0

私はcsvファイルをカレンダーとダウンロードフォームFTPを使用して選択できるタスクを実行しました。ローカルドライブに保存

現在、私はcsvファイルを保存するためのローカルドライブパスをあらかじめ定義していました。

ポップアップを表示する必要があるため、ユーザーは必要に応じて任意の場所に保存する必要があります。

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) 
    { } 
} 
+0

は、ユーザー独自のクライアント・マシンにサーバーからのダウンロード、またはサーバー上のどこかにそれを保存しますか? –

答えて

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 
     } 
+0

返信いただきありがとうございます。ウェブではありません.Windows以外の方法:(その他のソリューション? – user1109068

+0

http://stackoverflow.com/questions/8299096/browse-directories-for-save-location) –

+0

返信してくれてありがとうございました。どうすればいいですか?開始日と終了日を複数選択し、ダウンロードしてクライアントマシンに保存する必要があります。 – user1109068

関連する問題