2016-11-29 10 views
0

Моя цель - создать csv и sftp без сохранения файла на локальной машине с помощью vb.net. Вот мой код создать CSV:Создайте файл csv и sftp его, не сохраняя его на локальном

Public Sub writeCSV() 

    Dim headers = (From header As DataGridViewColumn In 

    DataGridView1.Columns.Cast(Of DataGridViewColumn)() _ 
      Select header.HeaderText).ToArray 

    Dim rows = From row As DataGridViewRow In DataGridView1.Rows.Cast(Of 

    DataGridViewRow)() _ 
       Where Not row.IsNewRow _ 
       Select Array.ConvertAll(row.Cells.Cast(Of 

    DataGridViewCell).ToArray, Function(c) If(c.Value IsNot Nothing, 

    c.Value.ToString, "")) 

    Using sw As New IO.StreamWriter("foo.csv") 

     sw.WriteLine(String.Join(",", headers)) 

     For Each r In rows 

      sw.WriteLine(String.Join(",", r)) 

     Next 

    End Using 

    'Process.Start("foo.csv") 

    'SFTP("foo.csv") 
End Sub 

Вместо запуска и/или сохранение процесса .. Я хотел бы написать подпрограмму, которая я могу просто SFTP это foo.csv к серверу оператора поставщика. Это возможно? Кроме того, SFTP необходимо будет использовать ключ, а не пароль.

Спасибо заранее,

+0

Вы уже разработали, как SFTP нормальный файл и заставить работать? Поскольку вы указываете на необходимость ключа, я подозреваю, что нет. Существует множество клиентских библиотек, которые будут делать это - вам нужно выбрать один и написать для него соответствующий код. Тогда волнуйтесь о том, можете ли вы это сделать, не сохраняя сначала файл. Если нет, вы можете просто удалить файл со своего компьютера после завершения передачи. Похоже, что с использованием необработанного FTP вы можете это сделать: http://stackoverflow.com/questions/39224938/upload-a-file-to-an-ftp-server-from-a-string-or-stream, поэтому, возможно, SFTP будет работа тоже – ADyson

+0

Спасибо ADyson. Да, я разработал SFTP; и, как вы указали, удаление файла после sftp является хорошей альтернативой; однако в этом случае это не является предпочтительным вариантом. Я бы хотел, чтобы файл был отправлен после создания, которого я никогда не делал. – Matt

ответ

-1

Создать файл CSV в качестве MemoryStream затем отправить эту MemoryStream на свой FTP-сервер.

Вот ссылка, показывающая отправку MemoryStream на FTP-сервер: ASP.NET C# upload MemoryStream content via FTPwebRequest issue

+0

Спасибо! Я попробую, чтобы – Matt

+0

FTP и SFTP - совершенно разные протоколы. Я был бы удивлен, если объект FTPWebRequest может выполнить передачу по SFTP. Также модераторы обычно не приветствуют ссылки только на ответы. – ADyson

+0

дополнительно - я не смог заставить это работать. Я попытался сделать это memystream: – Matt

0

Следующий код использует edtFTPnet/PRO, который я cо-развитый, чтобы сделать задачу вам нужно:

Sub SendCsvToSFTP(serverAddress As String, userName As String, password As String, fileName As String, csvText As String) 

    Using sftp As New EnterpriseDT.Net.Ftp.SecureFTPConnection 

     ' Set up the SFTP connection 
     sftp.ServerAddress = serverAddress 
     sftp.Protocol = EnterpriseDT.Net.Ftp.FileTransferProtocol.SFTP 
     sftp.UserName = userName 
     sftp.Password = password 

     ' Connect to the server 
     sftp.Connect() 

     Using csvStream As New MemoryStream() 
      Using csvWriter As New StreamWriter(csvStream) 
       csvWriter.Write(csvText)     ' Write the CSV text to the writer 
       csvWriter.Flush()       ' Make sure it's all written to the underlying stream 
       csvStream.Seek(0, SeekOrigin.Begin)   ' Now wind back to the beginning before uploading 

       sftp.UploadStream(csvStream, fileName)  ' Upload the stream 
      End Using 
     End Using 

     ' Close the SFTP connection 
     sftp.Close() 
    End Using 

End Sub 

Как вы можете видеть, для выполнения этой работы он использует класс SecureFTPConnection. Обратите внимание, что edtFTPnet/PRO является коммерческим продуктом, но есть 30-дневная пробная версия.

+0

Большое вам спасибо! – Matt

+0

@Matt Если это ответит на вопрос, тогда «спасибо» на SO будет нажать на галочку. Это удалит это из списка без ответа и поможет другим найти хорошие ответы при поиске. [Tour] очень короткий и объясняет больше о том, как работает SO. – Plutonix

 Смежные вопросы

  • Нет связанных вопросов^_^