怎样才能上传大到几百兆的附件?

解决方案 »

  1.   

    用专业的上传组件: AspNetUpload等。
      

  2.   

    还是ftp吧,或者写一个支持断点续传的插件。
      

  3.   

    AspNetUpload能上传这么大的附件吗?
      

  4.   

    找到AspNetUpload了,但是好像是收费的吧,
      

  5.   

    在web.config配置一下
     <httpRuntime executionTimeout="100" maxRequestLength="409600" useFullyQualifiedRedirectUrl="false" minFreeThreads="8" minLocalRequestFreeThreads="4" appRequestQueueLimit="100" enableVersionHeader="true"/>//****也可以在machine.config中配置相关属性
      

  6.   

    楼上这样做 不是太大的文件 可以 ,如果像楼主说的几百兆的文件就有问题了,因为ASP.NET会将全部文件载入内存后,再加以处理,所以你不能无限制的扩大文件大小.文件很大话建议FTP实现.楼主可以参考以下做法:
    利用隐含的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())
    {
     intn=1024;
     byte[]bs2=newbyte[n];
     while(wr.ReadEntityBody(bs2,n)>0)
     {
      ..
     }
    }
      

  7.   

    WebClient Client=new WebClient();
    Client.DownloadFile(路径,文件名);
      

  8.   

    具体代码如下
    client.DownloadFile(URLAddress,fileName);
    Stream str = client.OpenRead(URLAddress);
    StreamReader reader = new StreamReader(str);
    byte[] mbyte = new byte[100000];
    int allmybyte = (int)mbyte.Length;
    int startmbyte = 0;
    statusBar.Text = "正在接收数据...";
    while(allmybyte>0)
    {
    int m = str.Read(mbyte,startmbyte,allmybyte);
    if(m==0)
    break;startmbyte+=m;
    allmybyte-=m;
    }   完成了文件数据的读取工作后,我们运用FileStream类的实例对象将这些数据写入本地文件中:FileStream fstr = new FileStream(Path,FileMode.OpenOrCreate,FileAccess.Write);
    fstr.Write(mbyte,0,startmbyte); 
      

  9.   

    这个代码更具体一点http://www.nytcjsj.cn/csharp/Article_Print.asp?ArticleID=1106
      

  10.   

    打开对话框的组件OpenFileDialog ,SaveFileDialog 在web里面没有阿