求救:在上传视频时,怎么加进度条?? 在上传视频时,怎么加进度条?? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 就是像上传图片一样,只是在上传时,对视频进行了转换格式,转换成了FLV格式由于视频转换是需要漫长的等侍,所以想做个进度条,麻烦指点.. 我在一楼不是给你打了个问号了吗?你是怎么上传的? 用了什么类? FTP 还是Socket ? /// <summary> /// 上传视频 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void ImageButton1_Click(object sender, ImageClickEventArgs e) { if (Request.Files[0].FileName != null) { string saveName = DateTime.Now.ToString("yyyyMMddHHmmssffff"); string m_strExtension = Request.Files[0].FileName.Substring(Request.Files[0].FileName.LastIndexOf(".") + 1).ToLower(); if (m_strExtension == "asf" || m_strExtension == "avi" || m_strExtension == "mpg" || m_strExtension == "3gp" || m_strExtension == "mov" || m_strExtension == "mp4" || m_strExtension == "flv") { if (Request.Files[0].ContentLength <= 5242880) { } string fileName = PublicMethod.GetFileName(Request.Files[0].FileName);// GetFileName(); path = DateTime.Now.ToBinary().ToString() + "." + m_strExtension; upFileName = Server.MapPath("~/" + PublicMethod.upFile + saveName + "." + m_strExtension); Request.Files[0].SaveAs(Server.MapPath("~/" + PublicMethod.upFile + saveName + "." + m_strExtension)); size = Convert.ToString(Request.Files[0].ContentLength); string imgName = saveName + ".jpg";//图片文件名; string playName = saveName + ".flv"; string playFile = Server.MapPath("~/" + PublicMethod.playFile + saveName); string imgFile = Server.MapPath("~/" + PublicMethod.imgFile + saveName); PublicMethod pm = new PublicMethod(); if (m_strExtension == "flv") {//直接拷贝到播放文件夹下 System.IO.File.Copy(upFileName, playFile + ".flv"); pm.CatchImg(upFileName, imgFile); } string Extension = CheckExtension(m_strExtension); if (Extension == "ffmpeg") { pm.ChangeFilePhy(upFileName, playFile, imgFile); } else if (Extension == "mencoder") { // pm.MChangeFilePhy(upFileName, playFile, imgFile); MessageBox.Show(this, "You can upload only asf, avi, MPG then larger engines, 3gp, mov, mp4 video format, FLV"); } Session["file"] = fileName; me.FMediaPlayPath = PublicMethod.playFile + playName; me.FMediaImgPath = PublicMethod.imgFile + imgName; me.Upurl = PublicMethod.upFile + path; } else { MessageBox.Show(this, "You can upload only asf, avi, MPG then larger engines, 3gp, mov, mp4 video format, FLV."); return; } }} /// <summary> /// 上传视频 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void ImageButton1_Click(object sender, ImageClickEventArgs e) { if (Request.Files[0].FileName != null) { string saveName = DateTime.Now.ToString("yyyyMMddHHmmssffff"); string m_strExtension = Request.Files[0].FileName.Substring(Request.Files[0].FileName.LastIndexOf(".") + 1).ToLower(); if (m_strExtension == "asf" || m_strExtension == "avi" || m_strExtension == "mpg" || m_strExtension == "3gp" || m_strExtension == "mov" || m_strExtension == "mp4" || m_strExtension == "flv") { if (Request.Files[0].ContentLength <= 5242880) { } string fileName = PublicMethod.GetFileName(Request.Files[0].FileName);// GetFileName(); path = DateTime.Now.ToBinary().ToString() + "." + m_strExtension; upFileName = Server.MapPath("~/" + PublicMethod.upFile + saveName + "." + m_strExtension); Request.Files[0].SaveAs(Server.MapPath("~/" + PublicMethod.upFile + saveName + "." + m_strExtension)); size = Convert.ToString(Request.Files[0].ContentLength); string imgName = saveName + ".jpg";//图片文件名; string playName = saveName + ".flv"; string playFile = Server.MapPath("~/" + PublicMethod.playFile + saveName); string imgFile = Server.MapPath("~/" + PublicMethod.imgFile + saveName); PublicMethod pm = new PublicMethod(); if (m_strExtension == "flv") {//直接拷贝到播放文件夹下 System.IO.File.Copy(upFileName, playFile + ".flv"); pm.CatchImg(upFileName, imgFile); } string Extension = CheckExtension(m_strExtension); if (Extension == "ffmpeg") { pm.ChangeFilePhy(upFileName, playFile, imgFile); } else if (Extension == "mencoder") { // pm.MChangeFilePhy(upFileName, playFile, imgFile); MessageBox.Show(this, "You can upload only asf, avi, MPG then larger engines, 3gp, mov, mp4 video format, FLV"); } Session["file"] = fileName; me.FMediaPlayPath = PublicMethod.playFile + playName; me.FMediaImgPath = PublicMethod.imgFile + imgName; me.Upurl = PublicMethod.upFile + path; } else { MessageBox.Show(this, "You can upload only asf, avi, MPG then larger engines, 3gp, mov, mp4 video format, FLV."); return; } }} progressBar 不是进度条工具嘛? 楼主可以试试起个线程来读取信息然后赋给这个控件。 File.Copy最终调用的是Win32的CopyFile方法,想检测copy到哪个字节基本上比较困难。如果是目录Copy可以使用BackgroundWorker来异步检测Copy到哪个文件。如果是想检测Copy文件的具体内容恐怕要自己写Copy方法,下面两个方法供楼主参考。1、做个假的ProgressBar使用Timer来控制,当Copy某个文件的时候,这个bar不停的在闪烁(见过VB的安装程序吧,有一个条子就这样)。2、自己实现文件Copy方法,按字节块复制,每次复制一个字节块发送一个消息通知(需要一个委托)客户端复制了一个块,你大概需要一个OnCopy的方法来触发CopyHander事件。获取文件大小,再复制ProgressBar.Value =10;Application.DoEvents();lblProgress.Text = ProgressBar.Value.ToString() + "%";//打开源文件FileInfo fileToOpen = new FileInfo(sourceFileName);//保存到目标文件FileInfo fileToSave = new FileInfo(destFileName);//读源文件FileStream streamToRead = fileToOpen.Open(FileMode.Open, FileAccess.Read, FileShare.Read);//打开目标文件FileStream streamToWrite = fileToSave.OpenWrite();//设置正常一次读取的字节数int bufferSize = 4096;//设置正常写文件时的字节数组byte[] bufferNormal = new byte[bufferSize];//总共写文件的次数long readTimes = streamToRead.Length / bufferSize;//正常写文件N次后剩余的字节数目int remainderSize = Convert.ToInt32(streamToRead.Length % bufferSize);//设置剩余写文件时的字节数组byte[] bufferRemainder = new byte[remainderSize];//循环写数据到目标文件中for (long i = 0; i <= readTimes; i++){ //读源文件 streamToRead.Read(bufferNormal, 0, bufferSize); //写数据到目标文件 streamToWrite.Write(bufferNormal, 0, bufferSize); //s设置进度条的值 ProgressBar.Value = Convert.ToInt32(i * 100 / readTimes); Application.DoEvents(); //设置Lable上的进度值 lblProgress.Text = ProgressBar.Value.ToString() + "%";}//剩余字节的读和写if (remainderSize != 0){ streamToRead.Read(bufferRemainder, 0, remainderSize); streamToWrite.Write(bufferRemainder, 0, remainderSize);}//关闭文件的读写streamToRead.Close();streamToWrite.Close(); 怎么把搜索的文字加红色,并且区分大小写? 打印word C#一段代码的不明白 类似行列转换的查询语句 请问通过ip地址有哪几种主流的发送数据的方式? 连接数据库判断用户是否存在 求在子類代碼中快速取得基類方法原型的方法 有没有办法查看本机session的内容?? 为什么数据不更新呢??/ 有一个FTP上传,下载的问题? 怎样实现下载上传进度和界面同步? 求助高手们,C#封送接口到Dll 急急急!在线等!C# WinForm下的DataGridView滚动条消失的问题!
就是像上传图片一样,
只是在上传时,对视频进行了转换格式,转换成了FLV格式
由于视频转换是需要漫长的等侍,所以想做个进度条,
麻烦指点..
你是怎么上传的? 用了什么类? FTP 还是Socket ?
/// 上传视频
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
{
if (Request.Files[0].FileName != null)
{
string saveName = DateTime.Now.ToString("yyyyMMddHHmmssffff");
string m_strExtension = Request.Files[0].FileName.Substring(Request.Files[0].FileName.LastIndexOf(".") + 1).ToLower();
if (m_strExtension == "asf" || m_strExtension == "avi" || m_strExtension == "mpg" || m_strExtension == "3gp" || m_strExtension == "mov" || m_strExtension == "mp4" || m_strExtension == "flv")
{
if (Request.Files[0].ContentLength <= 5242880)
{
}
string fileName = PublicMethod.GetFileName(Request.Files[0].FileName);// GetFileName(); path = DateTime.Now.ToBinary().ToString() + "." + m_strExtension; upFileName = Server.MapPath("~/" + PublicMethod.upFile + saveName + "." + m_strExtension);
Request.Files[0].SaveAs(Server.MapPath("~/" + PublicMethod.upFile + saveName + "." + m_strExtension));
size = Convert.ToString(Request.Files[0].ContentLength);
string imgName = saveName + ".jpg";//图片文件名;
string playName = saveName + ".flv"; string playFile = Server.MapPath("~/" + PublicMethod.playFile + saveName);
string imgFile = Server.MapPath("~/" + PublicMethod.imgFile + saveName); PublicMethod pm = new PublicMethod();
if (m_strExtension == "flv")
{//直接拷贝到播放文件夹下
System.IO.File.Copy(upFileName, playFile + ".flv");
pm.CatchImg(upFileName, imgFile);
}
string Extension = CheckExtension(m_strExtension);
if (Extension == "ffmpeg")
{
pm.ChangeFilePhy(upFileName, playFile, imgFile);
}
else if (Extension == "mencoder")
{
// pm.MChangeFilePhy(upFileName, playFile, imgFile);
MessageBox.Show(this, "You can upload only asf, avi, MPG then larger engines, 3gp, mov, mp4 video format, FLV");
} Session["file"] = fileName;
me.FMediaPlayPath = PublicMethod.playFile + playName;
me.FMediaImgPath = PublicMethod.imgFile + imgName;
me.Upurl = PublicMethod.upFile + path;
}
else
{
MessageBox.Show(this, "You can upload only asf, avi, MPG then larger engines, 3gp, mov, mp4 video format, FLV.");
return;
}
}}
/// <summary>
/// 上传视频
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
{
if (Request.Files[0].FileName != null)
{
string saveName = DateTime.Now.ToString("yyyyMMddHHmmssffff");
string m_strExtension = Request.Files[0].FileName.Substring(Request.Files[0].FileName.LastIndexOf(".") + 1).ToLower();
if (m_strExtension == "asf" || m_strExtension == "avi" || m_strExtension == "mpg" || m_strExtension == "3gp" || m_strExtension == "mov" || m_strExtension == "mp4" || m_strExtension == "flv")
{
if (Request.Files[0].ContentLength <= 5242880)
{
}
string fileName = PublicMethod.GetFileName(Request.Files[0].FileName);// GetFileName(); path = DateTime.Now.ToBinary().ToString() + "." + m_strExtension; upFileName = Server.MapPath("~/" + PublicMethod.upFile + saveName + "." + m_strExtension);
Request.Files[0].SaveAs(Server.MapPath("~/" + PublicMethod.upFile + saveName + "." + m_strExtension));
size = Convert.ToString(Request.Files[0].ContentLength);
string imgName = saveName + ".jpg";//图片文件名;
string playName = saveName + ".flv"; string playFile = Server.MapPath("~/" + PublicMethod.playFile + saveName);
string imgFile = Server.MapPath("~/" + PublicMethod.imgFile + saveName); PublicMethod pm = new PublicMethod();
if (m_strExtension == "flv")
{//直接拷贝到播放文件夹下
System.IO.File.Copy(upFileName, playFile + ".flv");
pm.CatchImg(upFileName, imgFile);
}
string Extension = CheckExtension(m_strExtension);
if (Extension == "ffmpeg")
{
pm.ChangeFilePhy(upFileName, playFile, imgFile);
}
else if (Extension == "mencoder")
{
// pm.MChangeFilePhy(upFileName, playFile, imgFile);
MessageBox.Show(this, "You can upload only asf, avi, MPG then larger engines, 3gp, mov, mp4 video format, FLV");
} Session["file"] = fileName;
me.FMediaPlayPath = PublicMethod.playFile + playName;
me.FMediaImgPath = PublicMethod.imgFile + imgName;
me.Upurl = PublicMethod.upFile + path;
}
else
{
MessageBox.Show(this, "You can upload only asf, avi, MPG then larger engines, 3gp, mov, mp4 video format, FLV.");
return;
}
}}
2、自己实现文件Copy方法,按字节块复制,每次复制一个字节块发送一个消息通知(需要一个委托)客户端复制了一个块,你大概需要一个OnCopy的方法来触发CopyHander事件。
获取文件大小,再复制
ProgressBar.Value =10;
Application.DoEvents();
lblProgress.Text = ProgressBar.Value.ToString() + "%";//打开源文件
FileInfo fileToOpen = new FileInfo(sourceFileName);
//保存到目标文件
FileInfo fileToSave = new FileInfo(destFileName);
//读源文件
FileStream streamToRead = fileToOpen.Open(FileMode.Open, FileAccess.Read, FileShare.Read);
//打开目标文件
FileStream streamToWrite = fileToSave.OpenWrite();
//设置正常一次读取的字节数
int bufferSize = 4096;
//设置正常写文件时的字节数组
byte[] bufferNormal = new byte[bufferSize];
//总共写文件的次数
long readTimes = streamToRead.Length / bufferSize;
//正常写文件N次后剩余的字节数目
int remainderSize = Convert.ToInt32(streamToRead.Length % bufferSize);
//设置剩余写文件时的字节数组
byte[] bufferRemainder = new byte[remainderSize];
//循环写数据到目标文件中
for (long i = 0; i <= readTimes; i++)
{
//读源文件
streamToRead.Read(bufferNormal, 0, bufferSize);
//写数据到目标文件
streamToWrite.Write(bufferNormal, 0, bufferSize);
//s设置进度条的值
ProgressBar.Value = Convert.ToInt32(i * 100 / readTimes);
Application.DoEvents();
//设置Lable上的进度值
lblProgress.Text = ProgressBar.Value.ToString() + "%";
}
//剩余字节的读和写
if (remainderSize != 0)
{
streamToRead.Read(bufferRemainder, 0, remainderSize);
streamToWrite.Write(bufferRemainder, 0, remainderSize);
}
//关闭文件的读写
streamToRead.Close();
streamToWrite.Close();