怎么样获得文件上传进度。

离子漂浮物 2009-12-05 07:00:57
怎么样才能获取文件上传接收进度呢?不需要实现什么大文件上传功能,只要知道上传进度而以。谁能给点资料信息。
...全文
406 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
tjtimes 2009-12-07
  • 打赏
  • 举报
回复
帮顶,学习~
woshifou 2009-12-06
  • 打赏
  • 举报
回复
用SWFUpload
qqzeng-ip 2009-12-06
  • 打赏
  • 举报
回复
Progress progress = HttpUploadModule.GetProgress(upid, this.Application); 
string scriptText = "";
if (progress != null)
{
if (progress.State == UploadState.ReceivingData)
{ string length = (progress.ContentLength / 1024).ToString();
string read = (progress.BytesRead / 1024).ToString();
scriptText = String.Format("{0}:{1}", length, read);
}
else if (progress.State == UploadState.Complete)
{
scriptText = "完成";
}
else
{
scriptText = "出错";
}
}
return scriptText;
}
  • 打赏
  • 举报
回复
^:^
liherun 2009-12-05
  • 打赏
  • 举报
回复
上传文件的时候把文件的大小传过去,然后计算
jilezhenren 2009-12-05
  • 打赏
  • 举报
回复
帮顶
离子漂浮物 2009-12-05
  • 打赏
  • 举报
回复
谢谢楼上的回答,但是我问的不是怎么作进度条,我问的是怎么获得上传进度。
CPPACE 2009-12-05
  • 打赏
  • 举报
回复
.netajax控件
wuyq11 2009-12-05
  • 打赏
  • 举报
回复
参考
看看jquery进度条插件
zzxap 2009-12-05
  • 打赏
  • 举报
回复
http://download.csdn.net/source/732308
zzxap 2009-12-05
  • 打赏
  • 举报
回复
你可以在程序中,每到一个位置就设置一下进度条的长度。
zzxap 2009-12-05
  • 打赏
  • 举报
回复

在web上传中,实现进度条是间很COOL的事情,但是很多时候,为了实现进度条我们需要做的工作量会很大,现在采用FLASH可以很方便的使用,但是您想过通过JQUERY来实现吗?

Js代码如下
jQuery.extend({

createUploadIframe: function(id, uri){

var frameId = 'CrazyCoder_CN' + id;

if(window.ActiveXObject) {
var io = document.createElement('<iframe id="' + frameId + '" name="' + frameId + '" />');

if(typeof uri== 'boolean'){
io.src = 'javascript:false';
}
else if(typeof uri== 'string'){
io.src = uri;
}
}
else {
var io = document.createElement('iframe');
io.id = frameId;
io.name = frameId;
}

io.style.position = 'absolute';
io.style.top = '-1000px';
io.style.left = '-1000px';

document.body.appendChild(io);

return io

},

ajaxUpload: function(s) {
// 初始化
s = jQuery.extend({}, jQuery.ajaxSettings, s);

var id = new Date().getTime()
io = jQuery.createUploadIframe(id, s.secureuri)

// Watch for a new set of requests
if ( s.global && ! jQuery.active++ )
jQuery.event.trigger( "ajaxStart" );

var requestDone = false;

// Create the request object
var xml = {}
if ( s.global )
jQuery.event.trigger("ajaxSend", [xml, s]);

// Wait for a response to come back
var uploadCallback = function(isTimeout){
try {
xml.responseText = io.contentWindow.document.body?io.contentWindow.document.body.innerHTML:null;
xml.responseXML = io.contentWindow.document.XMLDocument?io.contentWindow.document.XMLDocument:io.contentWindow.document;
}
catch(e){}
if ( xml || isTimeout == "timeout") {
requestDone = true;
var status;
try {
status = isTimeout != "timeout" ? "success" : "error";
// Make sure that the request was successful or notmodified
if ( status != "error" ) {
// process the data (runs the xml through httpData regardless of callback)
var data = jQuery.uploadHttpData( xml, s.dataType );

// If a local callback was specified, fire it and pass it the data
if ( s.success )
s.success( data, status );

// Fire the global callback
if( s.global )
jQuery.event.trigger( "ajaxSuccess", [xml, s] );
} else
jQuery.handleError(s, xml, status);
} catch(e) {
status = "error";
jQuery.handleError(s, xml, status, e);
}

// The request was completed
if( s.global )
jQuery.event.trigger( "ajaxComplete", [xml, s] );

// Handle the global AJAX counter
if ( s.global && ! --jQuery.active )
jQuery.event.trigger( "ajaxStop" );

// Process result
if ( s.complete )
s.complete(xml, status);

// jQuery(io).unbind()

// setTimeout(function(){ document.body.removeChild(io); }, 100)

xml = null

}
}
// Timeout checker
if ( s.timeout > 0 ) {
setTimeout(function(){
// Check to see if the request is still happening
if( !requestDone ) uploadCallback( "timeout" );
}, s.timeout);
}
try {
var frameId = 'jQuery' + id;
var io = document.getElementById(frameId);
// Initialize the HTML form properties in case they are
// not defined in the HTML form.
s.uploadform.action = s.url;
s.uploadform.method = 'POST';
s.uploadform.target = frameId;

// Add extra data that may have been already passed.
if (s.data) {
var oEls = s.data.split('&');
for (var i=0; i < oEls.length; i++ ){
var thisEl = oEls[i].split('=');
var thisFormEl = document.createElement('input');
thisFormEl.type = 'hidden';
thisFormEl.name = thisEl[0];
thisFormEl.value = thisEl[1];
s.uploadform.appendChild(thisFormEl);
}

}


if(s.uploadform.encoding){
// IE does not respect property enctype for HTML forms.
// Instead use property encoding.
s.uploadform.encoding = 'multipart/form-data';
}
else{
s.uploadform.enctype = 'multipart/form-data';
}

s.uploadform.submit();

} catch(e) {
jQuery.handleError(s, xml, null, e);
}

if(window.attachEvent){
io.attachEvent('onload', uploadCallback);
}
else{
io.addEventListener('load', uploadCallback, false);
}

return {abort: function () {}};

},

uploadHttpData: function( r, type ) {
var data = !type;
data = type == "xml" || data ? r.responseXML : r.responseText;
// If the type is "script", eval it in global context
if ( type == "script" )
jQuery.globalEval( data );

// Get the JavaScript object, if JSON is used.
if ( type == "json" )
eval( "data = " + data );

// evaluate scripts within html
if ( type == "html" )
jQuery("<div>").html(data).evalScripts();

return data;
}
})

Ext.lib.Ajax.formRequest = function(form, uri, cb, data, isUpload, sslUri){
var createComplete = function(cb){
return function(xhr, status){
if((status == 'error' || status == 'timeout') && cb.failure){
cb.failure.call(cb.scope||window, {
responseText: xhr.responseText,
responseXML : xhr.responseXML,
argument: cb.argument
});
}else if(cb.success){
cb.success.call(cb.scope||window, {
responseText: xhr.responseText,
responseXML : xhr.responseXML,
argument: cb.argument
});
}
};
};

if (isUpload) {
jQuery.ajaxUpload({
uploadform: form,
data: data,
url: uri,
secureuri: sslUri,
complete: createComplete(cb)
});
} else {
jQuery.ajax({
type: Ext.getDom(form).method ||'POST',
url: uri,
data: jQuery(form).formSerialize()+(data?'&'+data:''),
timeout: cb.timeout,
complete: createComplete(cb)
});
}
};
新颖网络上传插件(StorageWebPlug)是一个支持超大文件(2GB,可扩展)上传的COM控件, 具备断点续传,文件MD5验证,大大提高上传效率、节省带宽,有详细的上传进度显示,支持多种脚本语言,欢迎下载体验。免费提供JavaScript SDK包。 产品特点: 1、文件上传使用增强的FTP协议,用户使用浏览器就可以上传超大文件到服务器(支持上传超过1G的文件)。 2、支持断点续传,系统智能续传未上传的文件,续传操作更简单,更方便,更快捷。 3、支持文件批量上传, 一次可以上传多个文件. 上传时有详细的状态显示(包括单个文件进度,整体进度,传输速率,剩余时间等)。 4、新颖网络免费提供JavaScript SDK包。通过新颖网络提供的封装好的JavaScript类库用户可以快速的与现有系统整合。 5、StorageWebPlug提供完善的接口和帮助文档,开发文档。开发人员可以动态设置上传保存路径, 设置允许扩展名, 允许最大大小等,可自定义强。 6、支持各种代理(HTTP, Socket4, Socket5等)。 7、组件采用多线程机制来保证上传效率。 8、支持批量文件上传, 用户可以一次性上传批量文件. 客户端可以绑定HTML表单变量, 服务端并可以接收表单变量 9、服务端文件保存路径可以随意指定,服务端文件保存路径可以灵活变化。保存路径支持网络路径。 10、为提高安全性,服务端组件可以指定用户权限 11、可以限制上传单个文件大小, 控制上传带宽上限, 允许文件扩展名, 拒绝文件扩展名等 12、上传数据时会根据网络状况来控制数据包大小, 避免网络堵塞 13、控件采用ATL编写, cab包只有59KB, 用56k的modem下载不会超过12秒 14、服务端支持Windows 2000 Server/Windows 2003 Server/Windows NT/Windows XP/Unix/Linux等操作系统 15、通过新颖网络业界领先的设计水平打造的操作界面可以帮助您的系统和产品获得更高的品质。 产品介绍:http://www.ncmem.com/service_storagewebplug.aspx 下载地址:http://www.ncmem.com/download.aspx
jQuery+ajax实现文件上传功能   jQuery+ajax实现文件上传功能(显示文件上传进度),供大家参考,具体内容如下  具体实现步骤  1、定义UI结构,引入bootstrap的CSS文件和jQuery文件 2、给上传按钮绑定点击事件 3、验证是否选择了文件 4、向FormData中追加文件 5、使用ajax发起上传文件的请求 6、设置文件的路径 7、使用xhr获得文件上传进度 8、当文件上传完成让进度条显示绿色