首页 新闻 会员 周边 捐助

针对网站 上传附件量大 的有效解决方案

0
[已关闭问题] 关闭于 2012-05-24 21:41

目前在某公司进行内部系统定制,遇到一个问题就是,上传文档量大(主要是图片和office文件),数量以及存储容量上也比较大,目前系统线上测试约6个月,网站增量为20G;而且目前还仍然处于边开发边测试的阶段,到系统正式上线使用的话,估计月增量会达到5G++;求高手提示技术关键词;

nickel的主页 nickel | 菜鸟二级 | 园豆:338
提问于:2012-05-21 15:59
< >
分享
所有回答(3)
0

上传大文件的一个方法是把文件分割成若干块字节数组 在服务端接收完若干块后在重新组合字节数组。

根据发送进度可以做进度条

      i = 2; byString = null; times = 1; length = 0;
            progressBar1.Value = 1;
            ofd = new OpenFileDialog();
            ofd.Multiselect = false;
            textBlock1.Text = "0%";
            if (ofd.ShowDialog() == true)
            {
                 fileName = ofd.File.Name;
                FileStream fs = ofd.File.OpenRead();//文件流
                   byString =new byte[fs.Length];
                    fs.Read(byString, 0, Convert.ToInt32(fs.Length));//读取成功
                     length = byString.Length;bool fiTime = true;
                     textBlock2.Text = fileName;    
                if (length < 1024 * 10)
                    {
                        
                        ServiceReference1.ServiceClient sc = new ServiceReference1.ServiceClient();
                        byte[] bySen = byString;
                        sc.OpenAsync();
                        sc.UploadFileByStringAsync(bySen, fileName, fiTime, length);
                        sc.UploadFileByStringCompleted += new EventHandler<ServiceReference1.UploadFileByStringCompletedEventArgs>(sc_UploadFileCompleted);
                        sc.CloseAsync();
                    }
                    else
                    {
                        times = (int)(Math.Ceiling(Convert.ToDouble(length) / Convert.ToDouble(10240)));
                        senByte(1, length, times, byString, true);
                    }
            }

青牛客 | 园豆:562 (小虾三级) | 2012-05-21 16:17

没分?

支持(0) 反对(0) 青牛客 | 园豆:562 (小虾三级) | 2012-05-21 16:18

不考虑大文件问题,只是文件量大;

支持(0) 反对(0) nickel | 园豆:338 (菜鸟二级) | 2012-05-22 20:32
0

没看明白问题,你是打算找文件上传的解决方案,还是文件上传以后的管理方案?

迷路中的路人甲 | 园豆:93 (初学一级) | 2012-05-22 09:33

后者,主要是针对文件管理;在内部局域网上不考虑网速问题,但零碎文件较多,而且在用户实际使用过程中会产生很多废弃文件,如:用户上传附件后,在数据库中没有实际有效的数据;是完全可以删掉的文件;还有就是用户误操作:上传文件后并未产生相关有效数据;

支持(0) 反对(0) nickel | 园豆:338 (菜鸟二级) | 2012-05-22 20:27
0

如果用户觉得上传太慢,且企业服务器磁盘空间无法承载。可以用断点续传,考虑单独弄一个文件服务器,或者使用磁盘阵列的方式存储。

丁码农 | 园豆:437 (菜鸟二级) | 2012-05-22 16:34

1:局域网不考虑网速问题;

2:假如只从软件上解决,不考虑硬件扩充呢?

3:假如单独建立存储服务器,技术层面上要求是不是很高?

支持(0) 反对(0) nickel | 园豆:338 (菜鸟二级) | 2012-05-22 20:31

@nickel: 只是存储的话,可以建立存储阵列吧。容量不足的时候直接扩展硬盘就行了。

支持(0) 反对(0) 迷路中的路人甲 | 园豆:93 (初学一级) | 2012-05-23 09:14
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册