我最近看了许多关于较大文件上传的帖子,其中看到一个用思归的方法来解决大文件的上传问题,如下:[size=24px][/size]
////////////////////////////////////////////////////////////////////////////////////////////////
思归解决的方法是利用隐含的HttpWorkerRequest,用它的GetPreloadedEntityBody 和 ReadEntityBody方法从IIS为ASP.NET建立的pipe里分块读取数据IServiceProvider provider = (IServiceProvider) HttpContext.Current;
HttpWorkerRequest wr = (HttpWorkerRequest) provider.GetService(typeof(HttpWorkerRequest));
byte[] bs = wr.GetPreloadedEntityBody();
....
if (!wr.IsEntireEntityBodyIsPreloaded())
{
int n = 1024;
byte[] bs2 = new byte[n];
while (wr.ReadEntityBody(bs2,n) >0)
{
.....
}
}至今我还是看不懂上边的代码,请各位高手指点迷津……(写一段用思归上传较大文件的代码,最好有注释)。谢谢!!我现在非常需要这个功能,希望各位能帮我这个忙!!![size=24px][/size]

解决方案 »

  1.   

    可用Web服务,分段上传,可把一个大分件分成N段,传过去的时候把文件要存的路径或文件名带过去,Web服务每接受到一段就写到文件里,记住是打开文件向文件末尾添加,不是覆盖,不论多大的文件,分段传总能传完,断点续传只要记住传到第几段了,也可简单实现。
      

  2.   

    上传大文件 写数据库不时很好的,特别是文件很多的时候  可以就写好的upload实现,去博客园 搜下,有你要的
      

  3.   

    个人觉得楼主不必拘泥于一种思路
    可以用asynchronous或Web Service的方式 
    http://www.codeproject.com/aspnet/FileHandlerPackage.asp