上传大文件的一个方法是把文件分割成若干块字节数组 在服务端接收完若干块后在重新组合字节数组。
根据发送进度可以做进度条
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);
}
}
没分?
不考虑大文件问题,只是文件量大;
没看明白问题,你是打算找文件上传的解决方案,还是文件上传以后的管理方案?
后者,主要是针对文件管理;在内部局域网上不考虑网速问题,但零碎文件较多,而且在用户实际使用过程中会产生很多废弃文件,如:用户上传附件后,在数据库中没有实际有效的数据;是完全可以删掉的文件;还有就是用户误操作:上传文件后并未产生相关有效数据;
如果用户觉得上传太慢,且企业服务器磁盘空间无法承载。可以用断点续传,考虑单独弄一个文件服务器,或者使用磁盘阵列的方式存储。
1:局域网不考虑网速问题;
2:假如只从软件上解决,不考虑硬件扩充呢?
3:假如单独建立存储服务器,技术层面上要求是不是很高?
@nickel: 只是存储的话,可以建立存储阵列吧。容量不足的时候直接扩展硬盘就行了。