jfinal 上傳檔案 進度條 問題

2021-09-02 03:10:27 字數 1549 閱讀 7292

最近看了一下jfinal

曾經用過 play 1

jfinal 對資料庫的相容性 相較 play 還是有一定的距離.

play是以model為準.不用運算元據庫

jfinal是以資料庫為準,基本不用操作model

jfinal的引數驗證方式比較繁瑣.play很優雅.jfinal controller方法不支援傳參.,play這個比較靈活.不管是日期,對像還是常用資料型別都支援

jfinal render()  之前 可能需要setarg()   play render()引數名即可

jfinal 每個controller都需要對映路由. play有預設的路由規則.

當然..jfinal小巧,play相較jfinal 還是有些龐大.雖然已經很精簡了.

jfinal的檔案上傳用的是cos元件.

cos元件裡頭沒有提供像fileupload類似的 progresslistner

所以不方便拿到檔案上傳的進度

.一頓搜尋.沒見人解決過.

小人不才,看了一下cos上傳**..暴力解決 了一下.直接修改了cos的原始碼

修改如下:

修改 cos的 filepart 類:

新增了乙個本地靜態變數與介面

public  inte***ce progress

public static threadlocalprogresss = new threadlocal();

修改了 filepart的

write(outputstream out)

long write(outputstream out) throws ioexception 

long size=0;

int read;

byte buf = new byte[8 * 1024];

if(progresss.get()!=null)progresss.get().start();

while((read = partinput.read(buf)) != -1)

if(progresss.get()!=null)progresss.get().complate();

return size;

}

controller中使用例子:

filepart.progresss.set(new filepart.progress() 

public void start()

public void complate()

});uploadfile file = getfile();

file.getfile();

列印結果:

0.16

0.33

0.49

0.66

0.82

0.99

1.15

1.32

1.48

等...........

單應用的情況下 將 進度值存入session,前台 ajax輪存獲取完成量即可

php ajax檔案上傳進度條

分為以下部分 demo.php 上傳過程處理 plain textphp include uploadprogres eter.class.php filewidget new uploadprogres eter if filewidget uploadcomplete demoserver.ph...

js 檔案上傳進度條

若想用jquery 中的ajax實現的話,jquery的 ajax 方法沒有關於 progress 事件的操作,此時需要呼叫的xmlhttprequest物件是指定progress 事件。ajax xmlhttprequest物件,傳送資料的時候,有乙個progress事件,用來返回進度資訊。上傳的...

js上傳檔案進度條

js部分data 上傳檔案 列表中的檔案上傳 fileuploadfun function event,index return var that this file event.target.files 0 if event.target.files.length 1 return that.lo...