我通过basicHTTPBinding(SOAP 1.1)将.zip文件作为字节数组发送到WCF服务。
基本上,从光盘读取文件并将其发送到文本信封对象中的服务器。
在.net中,我通过以下方式从光盘读取文件:
...
var bytes = ReadGridLibFile(path + fileName);
....
private static byte[] ReadGridLibFile(string fileName)
{
byte[] bytes;
int numBytesToRead;
using (FileStream fsSource = new FileInfo(fileName).OpenRead())
{
// Read the source file into a byte array.
bytes = new byte[fsSource.Length];
numBytesToRead = (int)fsSource.Length;
int numBytesRead = 0;
while (numBytesToRead > 0)
{
// Read may return anything from 0 to numBytesToRead.
int n = fsSource.Read(bytes, numBytesRead, numBytesToRead);
// Break when the end of the file is reached.
if (n == 0)
break;
numBytesRead += n;
numBytesToRead -= n;
}
numBytesToRead = bytes.Length;
}
return bytes;
}
当这样的字节数组被发送到WCF服务时,它将被写入服务器端的光盘并成为可打开的.zip文件。
我需要为相同的上传功能实现perl客户端。
在perl中,我读取这样的字节:
while (read(FILE, $buf, 60 * 57)) {
$bytes .= $buf;
}
close(FILE);
$bytes = encode_base64( $bytes );
当我将$ bytes作为数据放入信封对象并通过HTTP :: Request手动发送时,在服务器上,我得到一个字节数组,但是当保存到光盘时,它是一个坏的(损坏的)zip存档。我在perl中读取和发送字节数组的方式有什么问题?