上传文件到SQL Server而不使用太多内存

问题描述:

我正在使用SQL Server 2008和FileStream数据类型来保存数据库中的大文件。上传文件到SQL Server而不使用太多内存

到目前为止,一切工作正常,但问题是我上传的方法是这样的:

public static void UploadFileToDatabase(string location) 
{ 
    FileStream fs = new FileStream(location, FileMode.Open, FileAccess.Read); 

    byte[] data = new byte[fs.Length]; 

    fs.Read(data, 0, System.Convert.ToInt32(fs.Length)); 
    fs.Close(); 

    SaveToDatabaseMethod(data) 

    data = null; 
} 

显然我保存在内存中的文件,然后将它们上传到服务器,我认为这是一个非常不好的做法那么反正我至少可以限制这个所需的内存量呢?

在我的情况下,最佳做法是什么?

+1

您是否遇到任何问题或为什么要更改此设置?这些文件有多大?您应该看看'using'关键字 –

+0

您的SaveToDatabaseMethod的外观如何?只有避免在内存中缓冲文件的方法是将其流式传输到SaveToDatabaseMethod –

文件流有WriteByte方法

WriteByte

See The Insert Data Example

不知道这是最好的做法,因为它使记忆下来,但增加了步骤。需要测试一下。如果整个文件不加载需要逻辑来将其退出。