.Net读取文件VS Perl读取文件实现

时间:2013-02-07 17:20:52

标签: .net wcf perl file-upload

我通过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中读取和发送字节数组的方式有什么问题?

0 个答案:

没有答案