您的位置:首页 > 编程语言 > ASP

ASP.NET C# 文件上传速度限制

2013-05-16 12:34 357 查看
这个是一个Restful上传文件的实现方法,我们可以在上传过程中通过线程等待来现实限速功能

/// <summary>
/// 上传
/// </summary>
/// <param name="fileName"></param>
/// <param name="fileStream"></param>
public void FileUpload(string fileName, Stream fileStream)
{

FileStream fileToupload = new FileStream("D:\\FileUpload\\" + fileName, FileMode.Create);

int _speed = 1024 * 1024; // 1M/S
int pack = 10240; //10K bytes
byte[] bytearray = new byte[pack];
double limit = 1000 / (_speed / pack); // 限速时每个包的时间

int bytesRead, totalBytesRead = 0;
do
{
Stopwatch wa = new Stopwatch();
wa.Restart();
bytesRead = fileStream.Read(bytearray, 0, bytearray.Length);
totalBytesRead += bytesRead;
wa.Stop();
if (wa.ElapsedMilliseconds < limit) //如果实际带宽小于限制时间就不需要等待
{
Thread.Sleep((int)(limit - wa.ElapsedMilliseconds));
}

} while (bytesRead > 0);

fileToupload.Write(bytearray, 0, bytearray.Length);
fileToupload.Close();
fileToupload.Dispose();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: