如何设置.net二进制文件传输的编码

时间:2012-09-07 18:25:03

标签: .net encoding ftp binary

我可以使用.net ftp成功上传文本文件  但现在想上传图形(.png)图像。 我该如何设置流编码?

我对文本的内容(在Apl脚本中):

sourceStream←'。net'⎕new'System.IO.StreamReader'Localpathfilename 编码←'.NET'⎕NEW'System.Text.ASCIIEncoding'

然后我从传输的二进制文件中丢失了字节。 我也尝试省略编码行。

欢呼,Beau

更多信息: 这是用AplX .net编写的Ascii版本的核心 - 它工作正常 - 现在我需要一个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 个答案:

答案 0 :(得分:1)

二进制文件没有“编码”,除非您想要将数据转换为在有损传输介质(例如7位BBS或MTA,您需要对数据进行Base64编码)的情况下生存。编码用于文本文件。

请勿使用StreamReaderStreamWriter来处理二进制数据。这些类名称不好,应该将它们称为TextStreamReaderTextStreamWriter,以更好地反映它们的作用。如果您有想要使用的Stream,那么您应该使用BinaryReaderBinaryWriter