介紹請看這篇
http://www.wretch.cc/blog/herbjoyce/10148542
仔細閱讀過他們Code之後
發現可以不使用Google API的情況下也可以完成
Google API 的功用主要在於使用Ajax方式Call檔案上傳進度的PHP
所以主要要先安裝APC
如何安裝在介紹頁裡已經講的很詳細
就不在此贅述
安裝完成後
需要一個上傳的介面和一個進度欄(ProgressBar)
ProgressBar我使用的是ExtJS的ProgressBar
var pbar = new Ext.ProgressBar({
id:'pbar',
cls:'custom',
renderTo:'p'
});
需放在網頁最下方(要使網頁load完成後才產生此bar,要不然會出錯)
HTML部分別忘記加上對應的DIV
再來需要一個上傳的form如下:
hidden欄位不可少,那是給上傳檔案一個編號,以便做進度追蹤
$id是使用php function uniqid("") 產生
再來就是使用startProgress()來初始化某些值後開始追蹤上傳進度
function startProgress(){
setTimeout("getProgress()", 1000);
}
因為我沒有要初值化的東西,所以等待檔案上傳一秒後呼叫getProgress();
var server_url = "getprogress.php?progress_key=";
function getProgress(){
http_request = null;
url = server_url;
//嘗試使用各種方式開啟不同瀏覽器的http_request
if (window.XMLHttpRequest) { // Mozilla, IE7, Safari,...
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType) {
http_request.overrideMimeType('text/xml');
}
http_request.open('GET', url, 'false');
} else if (window.ActiveXObject) { // IE6
try {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
http_request.open('GET', url, 'false');
} catch (e) {
try {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
http_request.open('GET', url, 'false');
} catch (e) {}
}
}
if (!http_request) {
alert('Giving up :( Cannot create an XMLHTTP instance');
return false;
}
//開啟後便呼叫doCallback取得response
http_request.onreadystatechange = doCallback;
http_request.send(null);
function doCallback() {
if (http_request.readyState == 4) {
if (http_request.status == 200) {
if(http_request.responseText != "done"){
//在此取得並設定%數
percent = http_request.responseText;
pbar.updateProgress((percent/100), Math.round(percent)+'% completed...');
if (percent < 100){
setTimeout("getProgress(server_url)", 100);
}
}
//if(msg!=null)alert(msg);
} else {
//document.getElementById(target).innerHTML = http_request.responseText;
alert('There was a problem with the request.');
}
}
}
}
到此大致上就完成了
==============================================================
使用ExtJS framework 完成 getProgress()
var server_url = "getprogress.php?progress_key=";
function getProgress(){
Ext.Ajax.request({
url: server_url,
method: 'POST',
success: function(result) {
percent = result.responseText;
pbar.updateProgress((percent/100), Math.round(percent)+'% completed...');
if (percent < 100){
setTimeout("getProgress()", 100);
}
},
failure: function() {
alert('伺服器錯誤,請聯絡管理員');
}
});
}
http://www.wretch.cc/blog/herbjoyce/10148542
仔細閱讀過他們Code之後
發現可以不使用Google API的情況下也可以完成
Google API 的功用主要在於使用Ajax方式Call檔案上傳進度的PHP
所以主要要先安裝APC
如何安裝在介紹頁裡已經講的很詳細
就不在此贅述
安裝完成後
需要一個上傳的介面和一個進度欄(ProgressBar)
ProgressBar我使用的是ExtJS的ProgressBar
var pbar = new Ext.ProgressBar({
id:'pbar',
cls:'custom',
renderTo:'p'
});
需放在網頁最下方(要使網頁load完成後才產生此bar,要不然會出錯)
HTML部分別忘記加上對應的DIV
再來需要一個上傳的form如下:
hidden欄位不可少,那是給上傳檔案一個編號,以便做進度追蹤
$id是使用php function uniqid("") 產生
再來就是使用startProgress()來初始化某些值後開始追蹤上傳進度
function startProgress(){
setTimeout("getProgress()", 1000);
}
因為我沒有要初值化的東西,所以等待檔案上傳一秒後呼叫getProgress();
var server_url = "getprogress.php?progress_key=";
function getProgress(){
http_request = null;
url = server_url;
//嘗試使用各種方式開啟不同瀏覽器的http_request
if (window.XMLHttpRequest) { // Mozilla, IE7, Safari,...
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType) {
http_request.overrideMimeType('text/xml');
}
http_request.open('GET', url, 'false');
} else if (window.ActiveXObject) { // IE6
try {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
http_request.open('GET', url, 'false');
} catch (e) {
try {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
http_request.open('GET', url, 'false');
} catch (e) {}
}
}
if (!http_request) {
alert('Giving up :( Cannot create an XMLHTTP instance');
return false;
}
//開啟後便呼叫doCallback取得response
http_request.onreadystatechange = doCallback;
http_request.send(null);
function doCallback() {
if (http_request.readyState == 4) {
if (http_request.status == 200) {
if(http_request.responseText != "done"){
//在此取得並設定%數
percent = http_request.responseText;
pbar.updateProgress((percent/100), Math.round(percent)+'% completed...');
if (percent < 100){
setTimeout("getProgress(server_url)", 100);
}
}
//if(msg!=null)alert(msg);
} else {
//document.getElementById(target).innerHTML = http_request.responseText;
alert('There was a problem with the request.');
}
}
}
}
到此大致上就完成了
==============================================================
使用ExtJS framework 完成 getProgress()
var server_url = "getprogress.php?progress_key=";
function getProgress(){
Ext.Ajax.request({
url: server_url,
method: 'POST',
success: function(result) {
percent = result.responseText;
pbar.updateProgress((percent/100), Math.round(percent)+'% completed...');
if (percent < 100){
setTimeout("getProgress()", 100);
}
},
failure: function() {
alert('伺服器錯誤,請聯絡管理員');
}
});
}
文章標籤
全站熱搜

最近過的怎漾
(我是來鬧的) ㄏㄏㄏ
過的不怎樣
每天寫程式到天亮
你勒
把妹把到天亮嗎
大大
我搜尋了很多網站
才看到你po的這篇
我想詢問一下關於apc的安裝方法
我有看過
http://www.ibm.com/developerworks/opensource/library/os-
php-v525/
這篇內容寫的
我下載新版的wamp
似乎沒法跟上述的方法一樣安裝
我直接方到ext資料夾下
在php extensions就出現 php_apc 可以選
我選好後
在php.ini輸入
extension=php_apc.dll
apc.rfc1867 = on
apc.max_file_size = 200M
upload_max_filesize = 200M
post_max_size = 200M
這些資訊
輸入玩後
我把ajax的部份改成用jquery抓取
可是我抓取到的內容都是....
Fatal error: Call to undefined function apc_fetch() in
C:\wamp\www\progressbar\getprogress.php on line 5
是不是我的apc安裝出現問題....
抱歉 我真的查很久 可是不知道該怎麼辦 才會在這邊po文
真是辛苦了
在此介紹另外一套簡單好用的程式
名字叫fancyupload
google一下就會有相關文章了
無名小站之前就是用這一套作檔案上傳
他不只有進度追蹤,還可以多選檔案
使用上也非常簡單
所以我就沒另外寫一篇介紹
如果你有js的底子
我想對妳來說不難
good luck
補充一點:Call to undefined function apc_fetch()你要檢查phpinfo()內有無開啟apc