通过Webservice上传大文件

时间:2014-12-01 15:11:09

标签: c# web-services file-upload buffer

我的公司运行的应用程序必须将多种文件存档到某些distants服务器中。该应用程序运行良好,但无法处理大于1GB的文件。

以下是当前用于加载要上载到远程服务器的文件的函数:

FileStream fs = File.OpenRead(fileToUploadPath);
byte[] fileArray = new byte[fs.Length];
fs.Read(fileArray, 0, fs.Length);

然后将字节数组(成功加载时)拆分为100Mb字节数组,并使用以下函数发送到本地服务器(使用某些WSDL Web服务):

localServerWebService.SendData(subFileArray, filename);

我更改了负责文件读取的函数以使用BufferendStream,我还想改进Webservice部分,这样它就不必在每次调用时创建新的流。我想到了这样的事情:

FileInfo source = new FileInfo(fileName);
using (FileStream reader = File.OpenRead(fileName))
{
    using (FileStream distantWriter = localServerWebService.CreateWriteFileStream(fileName))
    {
        using (BufferedStream buffReader = new BufferedStream(reader))
        {
            using (BufferedStream buffWriter = new BufferedStream(distantWriter))
            {
                byte[] buffer = new byte[BUFFER_SIZE];
                int bytesRead = 0;
                long bytesToRead = source.Length;

                while (bytesToRead > 0)
                {
                    int nbBytesRead = buffReader.Read(buffer, 0, buffer.Length);
                    buffWriter.Write(buffer, 0, nbBytesRead);

                    bytesRead += nbBytesRead;
                    bytesToRead -= nbBytesRead;
                }
            }
        }
    }
}

但是此代码无法编译,并始终在行Cannot convert MyNameSpace.FileStream into System.IO.FileStream处向我提供错误using (FileStream distantWriter = localServerWebService.CreateWriteFileStream(fileName))。我也无法将MyNameSpace.FileStream转换为System.IO.FileStream。

Web服务方法:

[WebMethod]
public FileStream CreateWriteFileStream(String fileName)
{
    String RepVaultUP = 
        System.Configuration.ConfigurationSettings.AppSettings.Get("SAS_Upload");
    String desFile = Path.Combine(RepVaultUP, fileName);

    return File.Open(desFile, FileMode.Create, FileAccess.Write);
}

那么你们可以向我解释为什么这不起作用?

P.S。:英语不是我的母语,所以我希望我写的内容显然是不可靠的。

0 个答案:

没有答案