2012-09-07 62 views
0

我可以使用.net ftp 成功上傳文本文件,但現在想要上載圖形(.png)圖像。 我應該如何設置流編碼?如何設置.net二進制文件傳輸的編碼

我有文本(在APL腳本):

的SourceStream← '.NET' ⎕new '就是System.IO.StreamReader' Localpathfilename 編碼← '.NET' ⎕NEW「System.Text.ASCIIEncoding '

然後我從傳輸的二進制文件中丟失字節。 我也嘗試省略編碼行。

歡呼聲,博

更多信息: 這是ASCII版本的核心,寫在AplX .NET - 它工作正常 - 現在我需要一個BinaryReader在版本。 幫助表示讚賞

ftp←'.net' ⎕call 'System.Net.WebRequest.Create' Remotepathfilename 
    ftp.Method←'.net' ⎕call 'System.Net.WebRequestMethods+Ftp.UploadFile' 
    ftp.Credentials←'.net' ⎕new 'System.Net.NetworkCredential' Username Password 

sourceStream ← '.net' ⎕new 'System.IO.StreamReader' Localpathfilename 
encoding←'.NET' ⎕NEW 'System.Text.ASCIIEncoding' 

fileContents ← encoding.GetBytes.⎕REF 
sourceStream.ReadToEnd 
sourceStream.Close 
ftp.ContentLength ← fileContents.Length 
:try 
    stream←ftp.GetRequestStream 
:catchall 
    ..... 

這是我現在一直在努力,基於VB代碼爲:

http://msdn.microsoft.com/en-us/library/system.io.file.openread#Y1035 

Dim fs As FileStream 
FileStream fs = File.OpenRead(path)) 

所以我曾嘗試:

fileStream ← '.net' ⎕new 'System.IO.File' 
fileStream.OpenRead Localpathfilename 

下面是錯誤信息:

Constructor on type 'System.IO.File' not found. 
DOMAIN ERROR 
net_ftp_putfile[72] fileStream←'.net' ⎕new 'System.IO.File' 
+1

使用UTF8編碼。 ASCII編碼會導致問題,你最終會拉你的頭髮試圖解決這個問題(它發生在我身上) – Steven

+0

你的ftp代碼是什麼樣的? –

回答

1

二進制文件沒有「編碼」,除非您想轉換數據以在有損傳輸介質(例如7位BBSes或MTA,您希望Base64編碼您的數據的位置)中存活。編碼用於文本文件。

請勿使用StreamReaderStreamWriter來處理二進制數據。這些類沒有很好地命名,它們應該被稱爲TextStreamReaderTextStreamWriter以更好地反映它們的作用。如果你有一個你想要使用的Stream,那麼你應該使用BinaryReaderBinaryWriter

+0

啊,非常感謝,我會去嘗試一下,非常感謝。 – user1655444

+0

嗯,我仍然有問題。我收集這應該看起來像:新的BinaryReader(File.Open(fileName,FileMode.Open));任何人都可以給我一個這個看起來像一步一步的想法,我有問題翻譯成基於對象的AplX,謝謝,Beau – user1655444

+0

張貼您的代碼。 – Dai

相關問題