日期:2014-05-19  浏览次数:20388 次

老问题,文件上传,各位帮下忙
我想实现大文件的上传和进度条的显示,想请问有什么好的解决方法,我已经看了一些相关的资料。但是还不是很清楚.最好可以给个示例`谢谢了.

------解决方案--------------------
http://blog.joycode.com/dotey/archive/2005/06/12/53557.aspx
------解决方案--------------------
呵呵.帮顶!
------解决方案--------------------
网上有第3方做的控件,异步上传,ajax更新前台进度条,楼主找找看,名字忘了……
------解决方案--------------------
可以考虑用第三方的带进度条的大文件上传组件,这东西一个人做工程量还是比较大的
------解决方案--------------------
不用VBS,不用ACTIVEX

有啥办法可以?
------解决方案--------------------
帮你顶,这个代码应该多的是。
利用隐含的HttpWorkerRequest,用它的GetPreloadedEntityBody 和 ReadEntityBody方法从IIS为ASP.NET建立的pipe里分块读取数据

IServiceProvider provider = (IServiceProvider) HttpContext.Current;
HttpWorkerRequest wr = (HttpWorkerRequest) provider.GetService(typeof(HttpWorkerRequest));
byte[] bs = wr.GetPreloadedEntityBody();
....
if (!wr.IsEntireEntityBodyIsPreloaded())
{
int n = 1024;
byte[] bs2 = new byte[n];
while (wr.ReadEntityBody(bs2,n) > 0)
{
.....
}
}

------解决方案--------------------
http://mikesoft.cnblogs.com/免费的哦
------解决方案--------------------
if (namss != " ")
{
string nam = File1.PostedFile.FileName;
//取得文件名(抱括路径)里最后一个 ". "的索引

int i = nam.LastIndexOf( ". ");

//取得文件扩展名

string newext = nam.Substring(i);
//这里我自动根据日期和文件大小不同为文件命名,确保文件名不重复
DateTime now = DateTime.Now;

string newname = now.DayOfYear.ToString() + File1.PostedFile.ContentLength.ToString();

//保存文件到你所要的目录,这里是IIS根目录下的upload目录.你可以改变.
//注意: 我这里用Server.MapPath()取当前文件的绝对目录.在asp.net里 " "必须用 " "代替
string url = Server.MapPath( "~\\admin\\guangaoimg\\ " + newname + newext);
File1.PostedFile.SaveAs(url);

//this.HyperLink1.NavigateUrl = "upload " + newname + newext;

//得到这个文件的相关属性:文件名,文件类型,文件大小
//fname.Text=File1.PostedFile.FileName;
//fenc.Text=File1.PostedFile.ContentType ;
//fsize.Text=File1.PostedFile.ContentLength.ToString();
}