2014-09-26 108 views
0

我想寫一個TXT文件上傳到FTP站點。代碼可以正常工作,但是理想情況下,txt文件名將會標記日期和時間。所以我使用的代碼失敗,出現了一個錯誤「jusmentexception沒有處理 - 路徑中的非法章程 - 可能是因爲我試圖使用通配符作爲文件名.....任何想法 - 代碼如下所示:VB.NET上傳到FTP失敗,當文件名是變化

如何創建的文件將

Dim filewriter As New System.IO.StreamWriter("C:\file_folder\filename" & "_" & Format(Today(), "yyyymmdd") & "_" & Format(Today(), "hhmmss") & "_ord.txt") 

FTP UPLOAD SECTION - WORKS IS FILE NAME IS EXACT. 

'Open an FTP connection and upload new order file 

Dim request As System.Net.FtpWebRequest = directCast(System.Net.WebRequest.Create("ftp://ftp.FTPADDRESS.com/ed2*"), System.Net.FtpWebRequest) 
request.Credentials = New System.Net.NetworkCredential("USER", "PASS") 
request.Method = System.Net.WebRequestMethods.Ftp.UploadFile 

**********ERROR HAPPENS HERE**************** 

Dim file() As Byte = System.IO.File.ReadAllBytes("C:\file_folder\filename*") 
******************************************* 

Dim strz As System.IO.Stream = request.GetRequestStream() 
strz.Write(file, 0, file.Length) 
strz.Close() 
strz.Dispose() 

回答

2

感謝您的指導,我在幾個月前將其整理出來,但認爲它值得發佈修復。

Dim request As System.Net.FtpWebRequest = DirectCast(System.Net.WebRequest.Create("ftp://ftpaddress" & "_" & Now.ToString("yyyyMMdd_HHmmss") & "_ORD.txt"), System.Net.FtpWebRequest) 
      request.Credentials = New System.Net.NetworkCredential("user", "pass") 
       request.Method = System.Net.WebRequestMethods.Ftp.UploadFile 
       Dim file() As Byte = System.IO.File.ReadAllBytes(order_file) 
       Dim strz As System.IO.Stream = request.GetRequestStream() 
       strz.Write(file, 0, file.Length) 
       strz.Close() 
       strz.Dispose() 
0

這種方法將不接受通配符,並要求你轉換爲字節數組文件的完整路徑,你要使用的字符是無效的。

您是否可以將完整的文件路徑存儲在變量中,然後將該變量傳遞到System.IO.File.ReadAllBytes()?

+0

這是我最近的思路.....仍然試圖解決問題。 想到「Public FILENAME as File」還沒有算出如何將創建的文件分配給變量。 – user3174223 2014-09-26 15:37:22

+0

如果您需要幫助來確定構建方法的最佳方式,請您解釋一下您需要創建並上傳文件的上下文,我將很樂意盡我所能提供幫助。 – Mbond65 2014-09-26 16:24:38