超大文件处理

时间:2022-03-14 20:13:21
请教, 现在有一个项目, 客户要求:

1。每次上传一个2GB的文件, 每个月上传一次
2。每六个月处理一次, 得到一个整合好的结果, 就是说每六个月就要整合之前上传的六个文件, 总共12G

客户希望做成单机版,内嵌数据库, 能给每一个员工安装使用

请教解决方案, 用什么数据库合适?或者有其他更好的不用单机的解决方案?

谢谢

18 个解决方案

#1



在web.config里面配置如下  这个很重要。。。

 

 

 

 




<httpRuntime maxRequestLength="2097151" executionTimeout="120"  shutdownTimeout="120" />

 /*
         (1)maxRequestLength这个属性限制文件上传的大小,是以KB为单位的,默认值为4096KB,
              而最大上限为2097151KB,大约是2GB   2047MB。
         (2)executionTimeout,ShutdownTimeout属性则是限制文件上传的时间,以秒(s)为单位,默认值为90 s,
              如果您考虑到所设计的Web应用系统上传时间要超过90 s可延长设定值。
 */

 

 

 

 

 

 

 

 

 

 

 

 

protected void Button1_Click(object sender, EventArgs e)
    {
        if (MyUploadMath("~/shipinManager/", FileUpload1))
        {
            ClientScript.RegisterStartupScript(GetType(), "script", "<script>alert('ok')</script>");
        }
    }

 

 

 

 

代码方法:

    /// <summary>
    /// 大文件上传 支持2G
    /// </summary>
    /// <param name="fileName">要保存到服务器上的路径这里你不需要 Server.MapPath</param>
    /// <param name="fileupload">你的FileUpload控件</param>
    /// <returns></returns>
    public bool MyUploadMath(string fileName, FileUpload fileupload)
    {
        //复制如下 配置文件代码
        //<httpRuntime maxRequestLength="2097151" executionTimeout="120"  shutdownTimeout="120" />
       
        try
        {
            //HttpPostedFile 对当前文件的单独访问
            string SaveFileName = string.Empty;
            if (fileupload.HasFile)
            {
                //这里预防上传视频名字一样  所以格式化一个名字 2010-7-17 12:27:16 2154 格式化后20107171227162154
                string Time = DateTime.Now.ToString("yyyyMMddHHmmssffff");
                SaveFileName = fileupload.FileName.Split('.')[0] + Time + "." + fileupload.PostedFile.FileName.Split('.')[1];
                HttpPostedFile hpf = fileupload.PostedFile;//获取FileUpload已选定的文件
                hpf.SaveAs(Server.MapPath(fileName) + SaveFileName);
            }
            //if (isShow)
            //{
            //    System.Text.StringBuilder str = new System.Text.StringBuilder();
            //    str.Append("上传前文件名字:" + fileupload.FileName + "/n上传后文件的名字:" + SaveFileName + "/n您上传文件的大小(KB):" + fileupload.PostedFile.ContentLength + "/n");
            //    str.Append("文件保存在:" + fileName);
            //}
            return true;
        }
        catch (Exception ex)
        {
            ClientScript.RegisterStartupScript(GetType(), "script", "<script>alert('" + ex.Message + "')</script>");
            return false;
        }
    }


#2


最重要的是, 内嵌数据库, 选择什么样的数据库合适?SQl Server? My Sql 不可以, 容量不够

#3


2G,你确定能上传吗?

#4


超大文件处理
2G 内嵌数据库这个我还真不知道。

找个变通的方法。你帮他传到服务器,数据库保存下载地址。
毕竟每个月和大姨妈一样就那么一次,这种都是体力活。

#5


2G怎么传。

拼合更成问题,你说的是2G的txt文件吗?

#6


额,客户的要求太奇怪了

#7


该回复于2011-11-21 14:05:54被版主删除

#8


google asp.net 大文件上传

#9


这样的败家客户,狠狠宰吧,以后越来越少了。

#10


必须保存到数据库吗?
如果是的话,server server出了express版,其它的都可以支持到524 PB。 express版只支持到10G

参考

http://www.microsoft.com/sqlserver/en/us/product-info/compare.aspx

#11


即使你能存到数据库里,我怀疑读取时,也会卡死..
非要放数据库里吗?没放过这么大的..
只能帮你顶一下

#12


鸟儿大了什么林子都有``

#13


用oracle数据库比较合适

#14


往数据库塞进去2G,而且要塞好多次…… 超大文件处理

咱存个文件存储位置不成么。跟客户说一下。……当然如果数据库是你们提供的话,就让他存数据库吧,要宰请深宰。

内嵌数据库,express可用,sql-lite可用,derby可用,这三种的前提是:存文件存储位置。

#15


做成局域网发布版,WCF版,各种版。不知道单机版是什么意思,每个员工只要装了这个软件,都要自己处理12G的数据啊?

#16


做成局域网发布版,WCF版,各种版。不知道单机版是什么意思,每个员工只要装了这个软件,都要自己处理12G的数据啊?

#17


上传2G 貌似不太现实、

上次玩的时候直接死掉了。

#18


上传2G的不太现实,您看这样子,不传道数据库中,就保存在服务器端,也能下载下来,上传速度会快一点。

#1



在web.config里面配置如下  这个很重要。。。

 

 

 

 




<httpRuntime maxRequestLength="2097151" executionTimeout="120"  shutdownTimeout="120" />

 /*
         (1)maxRequestLength这个属性限制文件上传的大小,是以KB为单位的,默认值为4096KB,
              而最大上限为2097151KB,大约是2GB   2047MB。
         (2)executionTimeout,ShutdownTimeout属性则是限制文件上传的时间,以秒(s)为单位,默认值为90 s,
              如果您考虑到所设计的Web应用系统上传时间要超过90 s可延长设定值。
 */

 

 

 

 

 

 

 

 

 

 

 

 

protected void Button1_Click(object sender, EventArgs e)
    {
        if (MyUploadMath("~/shipinManager/", FileUpload1))
        {
            ClientScript.RegisterStartupScript(GetType(), "script", "<script>alert('ok')</script>");
        }
    }

 

 

 

 

代码方法:

    /// <summary>
    /// 大文件上传 支持2G
    /// </summary>
    /// <param name="fileName">要保存到服务器上的路径这里你不需要 Server.MapPath</param>
    /// <param name="fileupload">你的FileUpload控件</param>
    /// <returns></returns>
    public bool MyUploadMath(string fileName, FileUpload fileupload)
    {
        //复制如下 配置文件代码
        //<httpRuntime maxRequestLength="2097151" executionTimeout="120"  shutdownTimeout="120" />
       
        try
        {
            //HttpPostedFile 对当前文件的单独访问
            string SaveFileName = string.Empty;
            if (fileupload.HasFile)
            {
                //这里预防上传视频名字一样  所以格式化一个名字 2010-7-17 12:27:16 2154 格式化后20107171227162154
                string Time = DateTime.Now.ToString("yyyyMMddHHmmssffff");
                SaveFileName = fileupload.FileName.Split('.')[0] + Time + "." + fileupload.PostedFile.FileName.Split('.')[1];
                HttpPostedFile hpf = fileupload.PostedFile;//获取FileUpload已选定的文件
                hpf.SaveAs(Server.MapPath(fileName) + SaveFileName);
            }
            //if (isShow)
            //{
            //    System.Text.StringBuilder str = new System.Text.StringBuilder();
            //    str.Append("上传前文件名字:" + fileupload.FileName + "/n上传后文件的名字:" + SaveFileName + "/n您上传文件的大小(KB):" + fileupload.PostedFile.ContentLength + "/n");
            //    str.Append("文件保存在:" + fileName);
            //}
            return true;
        }
        catch (Exception ex)
        {
            ClientScript.RegisterStartupScript(GetType(), "script", "<script>alert('" + ex.Message + "')</script>");
            return false;
        }
    }


#2


最重要的是, 内嵌数据库, 选择什么样的数据库合适?SQl Server? My Sql 不可以, 容量不够

#3


2G,你确定能上传吗?

#4


超大文件处理
2G 内嵌数据库这个我还真不知道。

找个变通的方法。你帮他传到服务器,数据库保存下载地址。
毕竟每个月和大姨妈一样就那么一次,这种都是体力活。

#5


2G怎么传。

拼合更成问题,你说的是2G的txt文件吗?

#6


额,客户的要求太奇怪了

#7


该回复于2011-11-21 14:05:54被版主删除

#8


google asp.net 大文件上传

#9


这样的败家客户,狠狠宰吧,以后越来越少了。

#10


必须保存到数据库吗?
如果是的话,server server出了express版,其它的都可以支持到524 PB。 express版只支持到10G

参考

http://www.microsoft.com/sqlserver/en/us/product-info/compare.aspx

#11


即使你能存到数据库里,我怀疑读取时,也会卡死..
非要放数据库里吗?没放过这么大的..
只能帮你顶一下

#12


鸟儿大了什么林子都有``

#13


用oracle数据库比较合适

#14


往数据库塞进去2G,而且要塞好多次…… 超大文件处理

咱存个文件存储位置不成么。跟客户说一下。……当然如果数据库是你们提供的话,就让他存数据库吧,要宰请深宰。

内嵌数据库,express可用,sql-lite可用,derby可用,这三种的前提是:存文件存储位置。

#15


做成局域网发布版,WCF版,各种版。不知道单机版是什么意思,每个员工只要装了这个软件,都要自己处理12G的数据啊?

#16


做成局域网发布版,WCF版,各种版。不知道单机版是什么意思,每个员工只要装了这个软件,都要自己处理12G的数据啊?

#17


上传2G 貌似不太现实、

上次玩的时候直接死掉了。

#18


上传2G的不太现实,您看这样子,不传道数据库中,就保存在服务器端,也能下载下来,上传速度会快一点。