0

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

我有什么文本(在 Apl 脚本中):

sourceStream ← '.net' ⎕new 'System.IO.StreamReader' Localpathfilename encoding←'.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'
4

1 回答 1

1

二进制文件没有“编码”,除非您想转换数据以在有损传输介质(例如 7 位 BBS 或 MTA,您希望对数据进行 Base64 编码)中存活。编码用于文本文件。

不要使用StreamReaderStreamWriter处理二进制数据。这些类没有很好地命名,它们应该被调用TextStreamReaderTextStreamWriter更好地反映它们的作用。如果你有一个想要使用的 Stream,那么你应该使用BinaryReaderand BinaryWriter

于 2012-09-07T18:39:32.447 回答